Zeppelin : A moderation bot for Discord Using React
Zeppelin
Zeppelin is a moderation bot for Discord, designed with large servers and reliability in mind.
Main features include:
- Extensive automoderator features (automod)
- Word filters, spam detection, etc.
- Detailed moderator action tracking and notes (cases)
- Customizable server logs
- Tags/custom commands
- Reaction roles
- Tons of utility commands, including a granular member search
- Full configuration via a web dashboard
- Override specific settings and permissions on e.g. a per-user, per-channel, or per-permission-level basis
- Bot-managed slowmodes
- Automatically switches between native slowmodes (for 6h or less) and bot-enforced (for longer slowmodes)
- Starboard
- And more!
See https://zeppelin.gg/ for more details.
Development
These instructions are intended for bot development only.
? No support is offered for self-hosting the bot! ?
Running the bot
cd backendnpm ci- Make a copy of
bot.env.examplecalledbot.env, fill in the values - Run the desired start script:
npm run buildfollowed bynpm run start-bot-devto run the bot in a development environmentnpm run buildfollowed bynpm run start-bot-prodto run the bot in a production environmentnpm run watchto watch files and run the bot and api both in a development environment
with automatic restart on file changes
- When testing, make sure you have your test server in the
allowed_guildstable or the guild’s config won’t be loaded at all
Running the API server
cd backendnpm ci- Make a copy of
api.env.examplecalledapi.env, fill in the values - Run the desired start script:
npm run buildfollowed bynpm run start-api-devto run the api in a development environmentnpm run buildfollowed bynpm run start-api-prodto run the api in a production environmentnpm run watchto watch files and run the bot and api both in a development environment
with automatic restart on file changes
Running the dashboard
cd dashboardnpm ci- Make a copy of
.env.examplecalled.env, fill in the values - Run the desired start script:
npm run buildcompiles the dashboard’s static files todist/which can then be served with any web servernpm run watchruns webpack’s dev server that automatically reloads on changes
Notes
- Since we now use shared paths in
tsconfig.json, the compiled files inbackend/dist/have longer paths, e.g.
backend/dist/backend/src/index.jsinstead ofbackend/dist/index.js. This is because the compiled shared files
are placed inbackend/dist/shared. - The
backend/register-tsconfig-paths.jsmodule takes care of registering shared paths fromtsconfig.jsonfor
avaand compiled.jsfiles - To run the tests for the files in the
shared/directory, you also need to runnpm cithere
Config format example
Configuration is stored in the database in the configs table
prefix: '!'
# role id: level
levels:
"12345678": 100 # Example admin
"98765432": 50 # Example mod
plugins:
mod_plugin:
config:
kick_message: 'You have been kicked'
can_kick: false
overrides:
- level: '>=50'
config:
can_kick: true
- level: '>=100'
config:
kick_message: 'You have been kicked by an admin'
other_plugin:
config:
categories:
mycategory:
opt: "something"
othercategory:
enabled: false
opt: "hello"
overrides:
- level: '>=50'
config:
categories:
mycategory:
enabled: false
- channel: '1234'
config:
categories:
othercategory:
enabled: true