- Ban / unban
- Kick
- Timeout / untimeout
- Clear messages
- Warn system (warn, unwarn, list warnings)
- Jail system
- Sticky roles system
- Leveling system
- Leaderboards
- Configurable XP system
- Role rewards
- Ping / uptime
- Avatar lookup
- Polls
- Status helpers
- Help command
- Basic server/user info
- Translation (translate messages and text to almost any language)
- Logs support (stores moderation actions)
- Welcome setup + welcoming messages
- “Snipe” / “clearsnipe” style message recall
- Last.fm login and commands (optional; requires API key)
- Audio file playback in VC
- Info to see sample rate, bitrate, etc. of currently playing track
- Queue system
- Skip, stop, pause, resume controls
- SoundCloud & YouTube support
- Setup a "Join to Create" voice channel system
- Lock/unlock voice channels, kick users from channels, rename channels
- Usable by any server member
- Download and share videos from pretty much any video service. If yt-dlp supports it, we got it! (optional; requires yt-dlp and ffmpeg)
- Rainbow Six Siege player stats (optional; requires Ubisoft Connect credentials)
Warning
This will be deprecated in the future and replaced with a different service for stats.
- Node.js (recommended: current LTS)
- npm (comes with Node.js)
- A Discord application + bot token
- Permissions to add a bot to a server (usually a role with
Manage Server, or you can create a test server)
- yt-dlp (for video downloading features)
- Neon (or any postgres-compatible database)
- ffmpeg (required for audio playback in voice channel features, installs with
npm installduring install) - Last.fm API key (for Last.fm integration features)
- Ubisoft Connect account (for Rainbow Six Siege integration features, will be deprecated in the future)
If you're interested in hosting your own version of zekbot420, visit the Getting Started wiki page. Everything you'll need to know is there from preresiquites to cloning the repo, installing packages and making the bot live is there.
If that's all good to go, read the Configuration page to learn how to set up modify zekbot420.
Simply head to your project root and, in your terminal, run:
node index.jsOr, if you prefer a package script (if present in package.json):
npm run startSome features store data locally (for example: warnings/modlog/Last.fm configuration/audio files). You’ll see data files under the data/ directory.
Caution
Keep this folder on .gitignore to avoid accidentally committing sensitive data.
If you deploy to a platform with ephemeral storage, consider migrating persistence to a database or mounted volume.
index.js— bot entry pointcommands/— message/prefix style commands (organized by category)slashCommands/— slash command handlers/definitionswelcoming.js/welcomesetup.js— welcoming flowstoresnipe.js/snipe.js— message snipe supportdeploy-commands.js— registers slash commands with Discorddata/— local JSON storage (warnings, modlog, lastfm config, etc.)
- Confirm the bot is invited with the right scopes/permissions:
botapplications.commands(for slash commands)
- Re-run command deployment:
node deploy-commands.js- Ensure the bot role is high enough in the server role hierarchy
- Ensure the bot has permission to manage messages/moderate members where needed
- Make sure the required Gateway Intents are enabled in the Discord Developer Portal for your bot (and configured in code if applicable)
Contributions are welcome—bug fixes, new commands, improvements to docs, etc.
Suggested workflow:
- Fork the repo
- Create a feature branch
- Make changes
- Open a PR with a clear description and testing notes
This project is licensed under the MIT license.
