A Discord bot that tracks Mythic+ dungeon runs for your World of Warcraft guild or friend group. Never miss a key completion again—get automatic notifications when followed characters finish dungeons, plus weekly affix rotation announcements.
For guilds and friend groups:
- Use
/follow <character> <realm> <region>to track any character's Mythic+ runs - Get automatic Discord notifications when followed characters complete dungeons
- See weekly affix rotations announced when they change
- Slash command registration (
/follow) for easy character tracking - Automatic polling of Raider.IO (5 min for runs, 1 hour for affixes)
- SQLite storage for followed characters and run history—no external database needed
- Lightweight—runs anywhere .NET runs
- Create a Discord bot at discord.com/developers and invite it to your server
- Copy the example config and add your bot token:
cp appsettings.example.json appsettings.json # Edit appsettings.json with your Discord token and channel name - Run it:
dotnet run
The bot will create mplus-data.db in the working directory.
- .NET 10 SDK
- Discord bot token (create one at Discord Developer Portal)
- Discord channel where the bot can post messages
The bot uses standard .NET configuration. You can use appsettings.json, environment variables, or command-line arguments.
Copy the example and edit:
cp appsettings.example.json appsettings.json{
"Discord": {
"Token": "your-bot-token-here",
"Channel": "mythic-plus"
}
}
⚠️ appsettings.jsonis git-ignored to prevent accidentally committing secrets.
export Discord__Token=your-bot-token-here
export Discord__Channel=mythic-plus
dotnet rundotnet run --Discord:Token=your-token --Discord:Channel=mythic-plusThe repository includes a Nix flake for reproducible builds and deployment:
# Enter development shell
nix develop
# Build the bot
nix build
# Run directly
nix runFor production deployments on NixOS, use the provided module:
{
inputs.mplus-keybot.url = "github:adampoit/mplus-keybot";
outputs = { nixpkgs, mplus-keybot, ... }: {
nixosConfigurations.mplus-bot = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
mplus-keybot.nixosModules.default
{
services.mplus-keybot = {
enable = true;
environmentFile = "/run/secrets/mplus-keybot.env";
};
}
];
};
};
}Create /run/secrets/mplus-keybot.env with:
Discord__Token=your-bot-token-here
Discord__Channel=mythic-plus
After updating NuGet dependencies, regenerate the lock file:
nix run .#fetch-deps -- ./nix/nuget-deps.jsonYou can also build a self-contained binary:
dotnet publish -c Release -r linux-x64 \
--self-contained=true \
-p:PublishSingleFile=true \
-p:GenerateRuntimeConfigurationFiles=true \
-o ./artifacts
# Run on target server
./artifacts/mplus-keybotMIT
