Changelog
Info
Release notes on GitHub include links to the relevant commit, PR, or issue for each bullet. They are omitted here.
v2.10¶
December 22, 2025
Features¶
- Documentation updated to explain the basics of how I as the maintainer would expect someone else to contribute to the codebase.
Changes¶
- Text throughout EnduraBot rewritten to either be more generic or dynamically generated.
- The footer for the output of
/rquoteand the daily bible quote has been made configurable via variablerquote_footeradded todata/variables.json. README.mdgiven a makeover./infoembeds given a makeover.- What kinds of text result in exclusion from
/logsmade configurable via variablelog_text_excludeadded todata/variables.json.
Bugs¶
- Fixed issue where the text at
classes/itad_get_games_handler.pydid not properly reflect which endpoint a hypothetical error would come from.
Miscellaneous¶
- 6 variables in
data/variables.jsonthat were EDC specific in nature (e.gedc_ports) renamed for genericity. - Logic in
/logsused to filter out common log-lines refactored to not be a long chain ofif not... and notstatements. - Unused variable
l_role_idindata/variables.jsonformally deprecated.
v2.9¶
December 15, 2025
Features¶
- Documentation live. Features: a guide on how to host the bot yourself, explanation of how the bot's code is organized, breakdown of all configuration variables and what they do, and more.
/aboutupdated to include a link to it.
Changes¶
- The number of uses for
/gamebefore the cooldown triggers has been made configurable rather than hard-coded. - Searching for
/gameimproved to allow fuzzier searching while still getting a result. /editrolewill now detect if it's being used to remove a role granted with/trole, will error out, and then advise the user to use theremoveargument of/troleinstead./userwill no longer report if the target is a Endurance Coalition staff member or systems operator.- The REGEX used by
/rquoteto determine whether a message is eligible for selection has been made configurable via therquote_regexvariable added todata/variables.json.
Bugs¶
- Fixed issue where EnduraBot would not properly report to end-users if IsThereAnyDeal returns a
403status code.
Miscellaneous¶
.envhas been set to be a mounted volume in Docker rather than a file copied into it's image.- Classes
ItadGameSearchHandlerandItadGameDealsHandlerrefactored to provide better error handling and reduce unnecessary API calls. - New variable
disabled_cmdsadded todata/variables.json. Commands listed in this JSON object will be disabled and attempts to use them will result in an error. - Variable
admin_role_idindata/variables.jsondeprecated in favor of programmatically checking if a target has the native DiscordAdministratorpermission. - Custom exception classes
APIConnectionErrorandAPIContentNotFoundErroradded to improve error handling and debugging for API-related issues.
v2.8¶
December 8, 2025
Features¶
- New command:
/game. Lookup a game by name and get it's box art, generic information, and the best price for the game sourced from the IsThereAnyDeal API.- This command includes an argument -
private- which allows setting if the output should be posted to the channel publicly or only be visible to the executor. Defaults to posting publicly.
- This command includes an argument -
Changes¶
/logsnow filters out common and repeated log events from its output./trolegiven a new argument -disconnect- which determines if the target should be disconnected from VC when the command is ran. Defaults totrue.
Bugs¶
- Fixed description for argument
lengthin/trolewhich was written as if the command was still/takelwhen it should have been rewritten in PR #152. - Variable
rquote_cooldown_in_minutesrenamed torquote_cooldown_in_secondsas the value actually must be in seconds for the cooldown to work properly.
v2.7¶
December 1, 2025
Features¶
- New command:
/logs. Get an embed withXnumber of log lines from EnduraBot's internal logs. - New command:
/trole. Give a role temporarily to a user with the list of selectable roles mirroring the ones available for/editrole.- This command has replaced
/takel. - This command still defaults to giving
@Lfor a 24-hour interval if no arguments aside from the target are selected. /trolehas argumentremovewhich, when set toTrue, will remove the given temporary role from the user and delete the timer.- Notification of temporary role assignment will no longer be via DM and instead will always be sent to
#based-chat.
- This command has replaced
Changes¶
- The
reasonargument for command/monitorwill no longer be logged.
Miscellaneous¶
- Command
/monitorunbundled from coguser_cmds.pyand given own cogmonitor.py. - Cog
manage_role.pyrenamed toedit_role.pyto match the command it is named after (/editrole).
v2.6¶
November 23, 2025
Changes¶
- EnduraBot will avoid using the last
Xselected quotes from#out-of-contextto mitigate against duplicate quoting withXbeing a configurable value. /rgit-deals,/rgit-edit, and/rgit-listhave been deprecated.- Embed with invite use information when a member joins, added in
v2.4, given some QoL and longevity adjustments.
v2.5.2¶
November 16, 2025
Miscellaneous¶
- The automatic log header introduced in
v2.5will now no longer create a newline above itself.
v2.5.1¶
November 10, 2025
Bugs¶
- Fixed issued where the datatype of certain SQLite columns in
member_monitorcaused/monitorto not function as intended.
v2.5¶
November 10, 2025
Features¶
- New command:
/monitor. Add or remove individuals from a table of POIs. - In line with above command, if a POI does join, EnduraBot will send an alert and/or ban the account, depending on the
/monitoroptions selected.
Changes¶
/editrolewill now only display the roles which can be edited, rather than all roles on the server, to limit confusion./takelwill now no longer work on bots.- README updated.
- Various commands throughout EnduraBot have had their arguments given descriptions to improve usability.
Bugs¶
- Fixed spelling error in one of the
/takelembeds.
Miscellaneous¶
- Logs will now be properly separated by a date header at midnight every day to improve readability.
v2.4¶
November 6, 2025
Features¶
- New command:
/takel. Allows the assignment of@L, automatic removal from VC if in VC, and automatic removal of the role by an interval set by the user.
Changes¶
- When a user joins an embed with information regarding the invite used will be sent to configurable channel.
Bugs¶
- Fixed issue where the logging for
/userwould output that/infowas ran as the logging text wasn't updated in PR #109.
v2.3¶
October 30, 2025
Changes¶
- The output of
/rgit-dealscan now be sorted by percentage off or by a game's raw price. - Command
/inforenamed to/user. - Commands
/linksand/ipscombined into/infowith options to select. .env-examplehas been updated to includeitad-token=when it should have been done in PR #85- Class
ItadGetDealsHandlerwill now check the API connection to match functionality ofItadGameSearchHandler.
Bugs¶
- Fixed issue where the programmatic name of
/blacklistwasinfowhen it should have been madeblacklistin PR #85. - Fixed issue where if no deals existed for games in the RGIT table and
/rgit-dealswas ran an empty embed would be generated. - Preemptively fixed issue where once again I had 2 listeners in one file which would have resulted in only 1 listener being active.
Miscellaneous¶
- Set minimum log level for
discord.gatewayfromINFOtoWARNINGas it unnecessarily cluttered the logs.
v2.2¶
October 28, 2025
Major additions in this release. API integration, use of SQLITE to have persistent data, utilization of classes, file reorganization, oh my!
Features¶
- New command:
/rgit-deals. Get a list of deals from IsThereAnyDeal for games in a RGIT table which is manipulatable via/rgit-edit. Global cooldown set at 10 minutes. - New command:
/rgit-edit. Add or remove games from the RGIT table. This table is used to determine what deals are looked for when using/rgit-deals. - New command:
/rgit-list. List all the games in the RGIT table. - New command:
/blacklist. Blacklist a user from using any EnduraBot command.
Changes¶
- The EDC gaming connection URL (
edcgaming.org) is no longer hard coded and has become configurable. - Debug logging added to keep track of what percentage value causes EnduraBot to insult users or not on ping.
Bugs¶
- Fixed issue where the alert pinging detection to have users use
/alertwas overridden by the bot's detection of being pinged to insult members - Fixed issue where the programmatic name for
/rebootwas stillrconfigdue to a failure to rename it in PR #71. - Fixed issue where a fallback message ID for
/rquotein the event the random selection failed was an ID to a non-existent message.
Miscellaneous¶
- Reorganized various files in repository.
- Added classes.
DBRGITGames: Handler for interacting with the RGIT table in the SQLITE database.ItadGameDealsHandler: Handler for getting deals from a list of IsThereAnyDeal game UUIDs.ItadGameSearchHandler: Handler for giving the IsThereAnyDeal API a game title and getting specific information about the game back.DBBlacklist: Handler for interacting with the blacklist table in the SQLITE database.
v2.1¶
October 22, 2025
Features¶
- New command:
/reboot. Reboots EnduraBot.- Not to be confused with
/estop, which will stop EnduraBot and not allow it to restart. - This command has replaced
/rconfig.
- Not to be confused with
- New command:
/rquote-debug.- Outputs information regarding how
/rquotewould use a specified message were it to hypothetically be selected. Useful for investigating potential edge cases.
- Outputs information regarding how
- New command:
/echo.- Lets user make EnduraBot say something.
- EnduraBot now logs when invites are created and, when a user joins, which invite they used.
- EnduraBot has a percentage chance to insult a user when someone pings it.
Changes¶
/aboutnow reports EnduraBot's uptime./infowill now report if a user is a bot, has Discord Nitro, and what theirglobal_nameis./rconfigremoved.
Miscellaneous¶
- Permissions have been become configurable instead of hard-coded on a per-command basis
v2.0¶
October 19, 2025
Incrementing major version due to the amount of under-the-hood changes that have occurred since v1.2. Not too much has changed for front-facing users, however.
Features¶
- New command:
/rconfig. Useable by@SYS:OPto allow EnduraBot to notice when configurations have changed without requiring a reboot. /editrolenow supports choosing whether the target should be pinged, with the option defaulting tofalse.- All bot actions are now logged on the backend.
Changes¶
/rquoteand the daily bible quote will now include an image attachment if it exists in the selected message./editrole's functionality to allow@Ato manipulate all roles excluding itself and@Mhas been removed as it was unnecessary. It is now locked-down to the roles defined as editable invariables.json./editrolewill now use embeds for it's output.
Bugs¶
- Fixed issue where if a member's use of
/rquotewas rejected because it was done in#out-of-contextthey would still be subject to the cooldown. - Fixed issue where execution of
/estopwas not respected by Docker and the bot would simply immediately reboot.
Miscellaneous¶
/rquotethemes are now configurable invariables.jsonrather than hard-coded.- README updated to be transparent about artificial intelligence's role in development, alongside other minor refinements.
- JSON loading centralized to
config_loader.pyrather than JSON being loaded per cog. - Directories
/data/and/logs/are now Docker volumes, allowing viewing and manipulation while bot is active in it's container.
v1.2¶
October 13, 2025
Changes¶
- Command
/bibleqrenamed to/rquote. Quotes will now be presented in a different manner to give more uniqueness to the daily Bible quote functionality.
Bugs¶
- Fixed issue where
/infowould report a user had no roles if they had only 1 and would output nothing if they truly had no roles.
Miscellaneous¶
- Redundant variables removed where noticed, and code generally given some cleaning time.
- JSON files
bible_gospels.jsonanddaily_bible_openers.jsoncondensed intomisc_text.json. - JSON file
editable_roles.jsonmerged intovariables.json. - The cooldown period for using
/rquote(previously/bibleq) is now configurable invariables.json - File
bible.pyrenamed torquote.py.
v1.1¶
October 12, 2025
Features¶
- New command:
/estop. Useable by@M,@A, and@SYS:OPto shutdown EnduraBot completely in the event of an emergency. - New command:
/links. Produces embed with list of links relevant to EDC. - New command:
/ips. Produces embed with connection IPs for installed EDC services.
Changes¶
/bibleqnow searches the entire history of the channel rather than just the last 100 messages./bibleqwill now properly detect if multiple quoted lines exist in one message and present them appropriately.- Messages that ping
@SYS:OPand contain a certain combination of service and issue keywords will be deleted and an embed posted advising the user to instead use/alert. - JSON configuration files decoupled from repository. Examples left in their place.
- The daily bible quote message sent in
#based-chathas gotten a face-lift to distinguish it more from the quotes generated with/bibleq.
v1.0¶
October 10, 2025
Full minimal viable product release for EnduraBot.
🎉 MVP Bot Feature List¶
Commands¶
/bibleq- Present a quote from#out-of-contextas if it were a Bible quote./info- Get basic API-pulled information about any member of the Discord server./about- Get generic information about EnduraBot, it's current version, and a link to it's GitHub repository./alert- Ping EDC systems operators in their#systems-devchannel about an issue with EDC services, such as a server not booting.- (Mod Only)
/editrole- Give or revoke pre-defined set of roles from members of the server.@Acan do this for any role excluding@Aand@M.
Behaviors¶
- A quote from
#out-of-contextis submitted as if it were an inspirational Bible quote to#based-chatevery day at a 12pm Eastern.
🗒️ Release Notes¶
Features¶
- EnduraBot now submits a random quote from
#out-of-contextas if it were a Bible quote to#based-chatdaily at noon Eastern time.
Changes¶
- Use of
/bibleqlimited to once every 30 minutes per user.@Aand@Mexcluded from this restriction. - Commands
/roachcockand/takelcombined into/editrolewhich allows@Mto give and revoke a list of roles configured ateditable_roles.json. This also allows@Ato give and revoke any role (excluding@Aand@M, for security purposes). - EnduraBot will not listen to
/bibleqin#out-of-context. /alertis now useable outside of#systems-devby members with the@Sailorrole. These messages will be sent to#systems-devwith a ping.
Bugs¶
- Fixed issue where EnduraBot would not properly identify if a Discord member was
@SYS:OPor an@M/@Awhen using/info.
Miscellaneous¶
- Example
.envfile added to repository.