Glissm Bot banner

Glissm Bot

6 devlogs
18h 42m 5s

Glissm is a multi puropse discord bot, that is mostly finished.
Will pick this project up in a later time to finish it fully.

This project uses AI

Used copilot to help me format README.md better, for learning/explaining new stuff, and for small debugging. :)

Demo Repository

Loading README...

Spiyse

Shipped this project!

Hours: 18.7
Cookies: 🍪 338
Multiplier: 18.07 cookies/hr

I built Glissm, a Discord moderation bot with persistent warning tracking and hot-reload development tools!

What I Built

  • Full moderation system: /warn, /warnings, /unwarn, /timeout, /kick, /ban
  • Supabase integration for persistent warning storage
  • Reusable modal flow pattern in modals.py for consistent UX
  • Dynamic cog discovery system that auto-loads extensions
  • Admin hot-reload commands for fast iteration
  • Custom help command with category grouping

Biggest Challenges

The 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.

What I Learned

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.

What I’m Proud Of

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!

Spiyse

Devlog #6 (Final for now)

New stuff

  • Added a full moderation category with slash commands:
  • /warn
  • /warnings
  • /unwarn
  • /timeout
  • /kick
  • /ban
  • Added reusable moderation modal flow in cogs/moderation/modals.py so commands share one input UI pattern.
  • Added warning history UI (WarningSelectView) for targeted warning removal.
  • Added Supabase integration for warning persistence (database.py + member_warnings usage).

Changes

  • Updated cog discovery to only load modules that actually expose setup(bot).
  • Added moderator access config via role IDs and role names in .env + config.py.
  • Improved >reload UX with a clear usage response when no cog is provided.
  • Updated help command grouping so commands are shown by cog category.

Notes

  • This is my last devlog for a while. I want to ship this project in its current state and come back later for polish.
  • Main goal this cycle was to turn moderation from scattered experiments into a usable workflow.
  • Next time I return: tighten permission checks further, clean response consistency, and improve error handling around moderation actions.
Attachment
0
Spiyse

Devlog #5

Changes

  • 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.

New stuff

  • 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.

Notes

  • This removes most manual cog list maintenance and reduces extension mismatch issues.

  • Startup loader and admin reload flow now use the same discovery logic.

Next focus: moderation cogs migration and command-level polish.

Attachment
Attachment
Attachment
0
Spiyse

Devlog #4

Changes

  • ping command now shows as a embed
  • .example.env now has 2 new variables: LOG_CHANNEL_ID = LEAVE_CHANNEL_ID =

New stuff

  • Added events cog
  • Made the bot show custom Join, left, Kicked, Banned messages in specific selected channels

Notes

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

Attachment
Attachment
Attachment
Attachment
Attachment
0
Spiyse

Devlog #3

New stuff:

  • Utility cog

  • Bot Uptime command >uptime

  • Server info command >serverinfo or >si

Notes:

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 ;-;

Attachment
Attachment
0
Spiyse

Devlog #2

New stuff:

  • 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 bot status command >change_status or >cs

>cs <dnd, online, offline, idle>

Notes:

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.

Attachment
Attachment
Attachment
0
Spiyse

Devolog #1

Glissm is officially starting to take shape!

  • implemented the bot core with customizable command prefix and message content intent for prefix commands.
  • Established a modular cog system with general and admin command modules.
  • Created a custom help command using Discord embeds.
  • Added owner-only management commands like restart, reload, and shutdown.
  • Built a flexible configuration system to handle environment variables.
  • Added setup README files.

The bot is now functional and ready for feature expansions! :)

Attachment
Attachment
Attachment
Attachment
0