# Discord Reminders ![Discord Reminders Banner](./assets/images/discord-reminders-banner.svg) A Free and Open Source, No-AI, Self-Hostable Discord Reminder Bot.\ Written 100% by a human, for humans. Bugs ~~may~~ will occur. ## Features - [Quartz.NET](https://www.quartz-scheduler.net/) Scheduling - [MariaDB](https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql), [EF Core](https://learn.microsoft.com/en-us/ef/core/) reminder saving - [Discord.NET](https://github.com/discord-net/Discord.Net) framework - [.NET Generic Host](https://learn.microsoft.com/en-us/dotnet/core/extensions/generic-host) lifetime management, options pattern, DI... - Retry-On-Fail reminder triggers ## Usage To use the discord bot, you must first self-host it or use someone else's instance. There is no official, production-ready instance you can use. This is one of the main points of the bot. YOU'RE the one in control, not some company. It's YOUR data, not ours. Once you have [self-hosted](#self-hosting) the bot, or found someone else's instance to use and have a discord application install link (see [discord's user-installable app documentation](https://discord.com/developers/docs/tutorials/developing-a-user-installable-app#step-2-setting-up-commands), skip "Fetching app credentials" and "Add Guild Members intent". Select user install only), install the app for your discord account. The bot is used as a user-installable app, and works in servers, dms and bot's dms. The messages sent by the bot are ephemeral (only visible to you). Reminders are sent to you by the bot through its dms. ### Commands Every command for the bot's reminders are available in the `/reminder` command group. This means, that every reminder-related command is run with `/reminder `. The available commands are: - `/reminder add ` - Adds a reminder with name `` scheduled for ``. `` cannot be an already used reminder name. `` is currently a string being parsed using the default DateTime TypeConverter provided by Discord.NET. At the moment, the DateTime is parsed in UTC time, which can be offset by adding `+hh:MM:ss` to the end of the date. Example usage: `/reminder add name:Hello World! scheduled-time: 23.05.2025 17:03 +01:00`, `/reminder add name:Hi! scheduled-time: 14:30` - `/reminder remove ` - Removes (deletes) a reminder with name ``. The `` argument provides autocomplete and will show <= 25 (API limit) reminders in the following format: ` []`, trimmed to <= 100 characters (API limit) Example usage: `/reminder remove name:Foo Bar Baz` - `/reminder list` - Lists all of your reminders in the following format: ` - ` ## Self-Hosting This project aims to be self-hosted and modifiable by being free, open source, and licensed under the GNU AGPL 3.0 licence. While one of the main goals of this project is to be easily self-hostable, it's not yet at the state where self hosting it would be as easy as following a quick documentation page. This doesn't mean however, that it's not possible to self-host it yet. To do so, you can use docker to build an image using the dockerfile available in the repository (might be a work-in-progress, check other branches if it's missing). Docker compose would be recommended for hosting the bot. It requires a running mariadb instance, which can be hosted using the same docker compose configuration file. Bot configuration should usually be done either with environment variables (more info [here](https://learn.microsoft.com/en-us/dotnet/core/extensions/configuration-providers#environment-variable-configuration-provider)) or an appsettings.json file. Other options might be available. Look at the source code (./src/DiscordReminders/Program.cs) for more information. Configuration options are not documented yet, but they can easily be found in the source code (./src/DiscordReminders/Options/). Additionally, the RemindersDatabase connection string (ConnectionStrings:RemindersDatabase, env: CONNECTIONSTRINGS__REMINDERSDATABASE) must be set to connect to your mariadb instance.