Shodan (named after the antagonistic Artificial Intelligence from the System Shock video game series) is a Discord bot that I wrote in 2021-2022. While a lot (hundreds? thousands?) of Discord Bots exist already, most of them didn't do exactly what I wanted - either with functionality I desired missing, or just being super bloated in other ways with features I didn't care about. And I liked the idea of having one bot to do everything instead of several bots.
The Discord server I founded and help run is called "The Speak Easy". It's an exclusive place with ~100 members, all of whom are friends or friends of friends. It started out of a desire to continue playing tabletop RPGs as we went into lockdown, and has expanded to be a community where people can talk about standard media (books / music / movies), fashion, plants, queer & trans issues, and play videogames or tabletop games together.
Shodan has some things that are fairly standard - rolling dice, assigning roles to people when they use reactions / buttons, things like that.
But there's also a lot she does that's more unique. She monitors for bad language and will report it to admins, can post formatted messages. She has cron jobs that have her post regular things like calls to action for a morning coffee chat hangout, and conversation starters like random questions of the week and checking in later (with a "Tell us something good about your week" prompt).
She also can post polls, shown in the images above. The first approach to this was ascii text-based (and used numerical reactions prior to Discord adding buttons). The primary problem with this approach is that it fell apart on mobile because the calendar (especially with various app padding) would invariably be wider than the screens.
With the second, more refined approach, she actually generates an image, and colors the calendar itself like a heatmap.
Since writing Shodan, she has expanded out into a couple of other servers as well - including a local community for Salem, Massachusetts that has something like 600 members. While she isn't yet public (and may not ever be), a lot of prepping her for those other servers involved manual changes and overrides in config files. It was fine for one-offs, but it also meant that I had to be available for those changes, which is not exactly sustainable - especially if she went off to join servers that I wasn't myself interested in being a part of (which has already happened).
This is still very much a work-in-progress but the idea is that the various features can be enabled and disabled, and beyond that, many of the features have additional options to them as well. In the screenshot above, for instance, setting the message that appears when someone joins the server, specifying both the message itself and the channel that it appears in.
There's always more to do with her but she's already become extremely invaluable.