Glissm is a multi puropse discord bot, that is mostly finished.
Will pick this project up in a later time to finish it fully.
Used copilot to help me format README.md better, for learning/explaining new stuff, and for small debugging. :)
Glissm is a multi puropse discord bot, that is mostly finished.
Will pick this project up in a later time to finish it fully.
Used copilot to help me format README.md better, for learning/explaining new stuff, and for small debugging. :)
I built Glissm, a Discord moderation bot with persistent warning tracking and hot-reload development tools!
/warn, /warnings, /unwarn, /timeout, /kick, /ban
modals.py for consistent UXThe hardest part was refactoring moderation from scattered experiments into a cohesive workflow. Implementing the reusable modal pattern took iteration, and integrating Supabase for warning persistence required learning their API and handling async operations properly. Also wrestled with Discord’s intent system and the setup(bot) discovery pattern.
Learned a ton about discord.py architecture, async programming patterns, database integration, modular cog design, and building maintainable bot structures. Figured out how to build extensible command systems where new features don’t require touching core code.
Most proud of how clean the final architecture turned out! The dynamic cog discovery means I can add features without restarting, the modal flow keeps moderation UI consistent.
Will continue working on it in the future!
/warn/warnings/unwarn/timeout/kick/bancogs/moderation/modals.py so commands share one input UI pattern.WarningSelectView) for targeted warning removal.database.py + member_warnings usage).setup(bot)..env + config.py.>reload UX with a clear usage response when no cog is provided.Log in to leave a comment
Refactored bot structure from package-based cog loading to per-file extensions.
Added dynamic cog discovery so cogs auto-load from the cogs/ folder.
Updated admin reload/refresh to work with discovered cogs instead of a static config list.
Added shared cog discovery helper (discovery.py).
Standardized extension entry pattern across cogs: each module now exposes setup(bot).
Cleaned package init.py files to keep them lightweight.
This removes most manual cog list maintenance and reduces extension mismatch issues.
Startup loader and admin reload flow now use the same discovery logic.
Log in to leave a comment
LOG_CHANNEL_ID = LEAVE_CHANNEL_ID =
The messages have a random greeting/goodbye each time because I’m using random.choice
to pick a random text from a list!
Started to work on one other feature but had to scarp it because I didn’t like it at the end xd
Log in to leave a comment
Utility cog
Bot Uptime command >uptime
Server info command >serverinfo or >si
Thank god that https://embed.dan.onl/ exists, such a life saver!!
Couldn’t figure out why ctx.guild.owner.mention didn’t want to work, turns out it was beacuse i didn’t have Server Members Intent enebled..
Also spent some time looking on why ctx.guild.region wasn’t working, turnsss outt it’s because they changed region to preferred_locale ;-;
Log in to leave a comment
Logger.py: made this so I don’t have to write logger = logging.getLogger("glissm") in each command file that needs it xd
Presence_manager.py: had to make this because if changed the activity it would reset the status and if changed the status it would reset the activity, so this file stores the current_activity and current_status🙏
Change bot activity command >change_activity or >ca
>ca <streaming, game, listening, watching> <what ever text you wanna put in here >
>change_status or >cs
>cs <dnd, online, offline, idle>
Spent more time then I wanted on these cosmetic commands because of misspelling stuff, being sleepy and it was my first time working with bot activity and status.
Log in to leave a comment
The bot is now functional and ready for feature expansions! :)
Log in to leave a comment