A Discord bot that serves as a general-purpose bot with various features aimed enhancing discord server management and engagement.
Features
- Role Stats: Provides graphical statistics for user-defined role categories (e.g. age, region, etc.).
- User activity: Tracks messages sent by users and displays activity statistics.
- Bump Reminder: Reminds users to bump the server, tracks bump counts, and supports leaderboard.
- Invite Tracking: Tracks invites to the server and supports leaderboard.
- Server Lockdown and Backup Permissions: Allows server lockdown for backing up permissions.
- Supports Custom Prefixes
Database ERD
Motivation
In my discord server, many new comers after interacting with few people would wrongly assume the demographics of the server. I wanted to be able to view distribution of users based on roles like age, region, etc to be able to clear this up when anyone would mention it. However, I couldn’t find any bots that provided this feature. So, I decided to do it myself. Later, I noticed that there were other problems like bump reminders, invite tracking, etc. that either didn’t exist, were not customizable or were a paid feature in other bots. So, I developed my bot further to include these features.
Challenges
- Database Design and Queries: I required a database to support the features I wanted to implement. However, I had no prior experience with databases. I had to learn about databases, design the database schema with normalization and relationships, and write queries to support the features I wanted to implement.
- Ethical Considerations: When I reached out for help with my bot, I was informed that while the features complied with Discord’s ToS, some of them raised concerns about user privacy and ethical considerations. I thought about making the bot transparent about what data it collects and how it uses it, like having the new users agree to a privacy policy to stay in the server. But it felt too much work and I left it there to be implemented later.
Tech Stack
- PostgreSQL
- Python, Discord.py