-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Welcome to the JohnnyBot wiki! JohnnyBot does all of the stuff Discord bizarrely won't let you do! Designed to automate tons of server management and enforce some rules while you're at it.
- Setup Guide - Installation, configuration, and getting started
- Commands Reference - Complete command documentation
- GitHub Repository - Source code and issues
JohnnyBot provides features such as automatic role assignment, message deletion, and user management to ensure a smooth server experience. Most commands are limited to users with the MODERATOR_ROLE_NAME, however the PetBot commands can be leveraged by all users.
- Provides moderators with slash commands to manage members, messages, and post announcements
- Mass role assignment for efficient user management
- Monitors voice channels and mutes all members if only one adult and one child are present
- Sends an alert to the moderators channel
- Set recurring reminders to be sent to specific channels at regular intervals
- Persistent reminder storage with automatic scheduling
- Subscribe to calendar feeds and get notifications for new events
- Configurable notification channels
- Logs actions and errors to a rotating log file in the bot directory
- DM a tail of the log on request
- Allows moderators to dump and archive user messages from specific channels
- Provides temporary download links for message archives
- Automatically cleans up old archive files
- Deletes any non-moderator messages posted in the
PROTECTED_CHANNELS
you define inconfig.py
- This is a hack to get around Discord's requirement of a minimum number of messageable channels
- Includes PetBot functionality with time-themed messages
- Python 3.7 (tested up to 3.13)
- All modules in
requirements.txt
- Firewall rule allowing inbound connections on port TCP port 80 (for message archive hosting)
- Follow the Setup Guide for complete installation instructions
- Browse the Commands Reference to learn about available commands
- Configure your bot according to your server's needs
Important: The bot uses both asyncio and threading for different purposes. DO NOT CHANGE THIS:
- All Discord API interactions (primary event loop)
- Background tasks (like reminder checking)
- Command handling
- Network operations
- Synchronous operations that cannot be made async (like file I/O)
- Thread-safe caching of Discord objects
- Synchronization primitives (locks) for shared resources
This hybrid approach allows the bot to:
- Handle Discord async API efficiently
- Perform blocking operations without stalling the event loop
- Maintain thread safety for shared resources
- Scale well under load
Contributions are welcome! If you encounter any bugs or have suggestions, feel free to open an issue or submit a pull request on the GitHub repository.
Bot interaction functionality adapted from PetBot under MIT License.
This project is licensed under the GNU General Public License v3.0.