MODiX is a .NET C# Discord Bot that focuses on versatility, moderation and fun tools, primarily for users of the the largest C# Discord guild. MODiX's featureset is driven primarily by the C# guilds' needs, but feature requests, suggestions and other contributions are welcome and the bot is fully self hostable, and multi-tenant capable.
MODiX's primary features:
- C# REPL, to execute C# directly in Discord
- Persistent user notes, warnings, muting and banning
- Message quoting embeds
- Custom inline message tags, acting as macros to send templated messages that frequently get mentioned
If you want to report issues, discuss development or simply meet those who maintain MODiX, jump in on the dedicated MODiX-development channel on Discord.
You will need the .NET 8 SDK installed. MODiX is developed in VS Code, Visual Studio and Rider to maximise developer satisfaction.
We recommend you set up a containerised environment. MODiX is powered by a PostgreSQL database, and the easiest way to get started is by using Docker (or equivalent). Steps below apply if you use Docker.
The following assumes you have:
- Docker installed
- The .NET SDK 8 installed
- A Discord application (via the Discord developer portal)
- Open a shell in the root of the MODiX repository
- Execute
docker-compose -f dev.docker-compose.yml up -d
- Open a shell in
src/MODiX
- Execute
dotnet user-secrets set DiscordClientId {CLIENT_ID}
replacing{CLIENT_ID}
with your Discord application client ID - Execute
dotnet user-secrets set DiscordClientSecret {CLIENT_SECRET}
replacing{CLIENT_SECRET}
with your Discord application client secret - Execute
dotnet user-secrets set DiscordToken {TOKEN}
replacing{TOKEN}
with your Discord bot token - Start your IDE and debug or
dotnet run
All notable work will be documented as GitHub issues. Ensure you do not work on any new features unless it is documented as a GitHub issue, so as to avoid disappointment if any of the core maintainers disagree.
The work we do would not be possible without these notable dependencies. Note that this list is not exhaustive.
- Discord.NET - The framework we rely on to communicate with Discord itself
- Entity Framework Core - The ORM of choice for all queries
- efcore.pg - PostreSQL provider for Entity Framework Core
- LINQKit - Extensions over Entity Framework Core for ergonomic querying
- Humanizer - Readable date/time formats for humans, because we're not machines
At this time we do not offer a managed hosted service for MODiX. You can host MODiX along with all of its dependencies using the docker-stack.yml
file as a template.