Skip to content

Releases: r-Techsupport/TechSupportBot

v2026.06.15

15 Jun 18:42
5452f51

Choose a tag to compare

Core

  • A complete rework of the config system was been undertaken, replacing the database config system with a file based config system
  • Restructures the file system to remove nesting everything in the "techsupport_bot" folder
  • Restructions the extensions storage in the bot to be "modules.category.extension" instead of "commands.extension" or "functions.extension"
  • Updates how module names are determined for application commands
  • The presence intent is no longer requested
  • Add property to make application commands always enabled regardless of guild config
  • Adds a docker ignore file to slim down the size of the docker container
  • Make the check-format make task run the same CI as is run on GitHub
  • Logs app commands as a background task, to hopefully speed up response times

Modules

Administration

Bot info

  • Full migration to application commands

Echo

  • Full migration to application commands

Fun

Animal

  • Full migration to application commands
  • Fixes the frog API to properly display images

Burn

  • Full migration to application commands

Conch

  • Full migration to application commands

Correct

  • Full migration to application commands

Duck

  • The default speed record is now -1
  • Default speed record is now hidden from the UI in all cases
  • Allow the .duck stats command to be run on a discord.User
  • Changes the display of .duck stats to be a bit nicer
  • Bot accounts are no longer able to participate in the duck hunt
  • The caller of the .duck spawn command can no longer participate in the hunt
  • Adds a new /duck next command to show admins the next duck spawn time
  • Fuzzes duck spawn time to make it less predictable

Grab

  • Message content is now encrypted in the database

Hangman

  • /hangman start is no longer logged in discord

XKCD

  • Migrates to application commands

Internal

Data delete

  • New module that has a command that allows users to delete some of their own data from the bot

Privacy

  • New module that adds a command to display the bots privacy policy to the user

Moderation

Events

  • Complete overhaul of events logging system. A huge number of additional events are now tracked, and information is displayed in a more readable way

Logger

  • Now mentions roles instead of listing text names

Moderator

  • Adds autocomplete for /unwarn command
  • Bans from max warnings will now show a ban in the text output
  • Removes command use logging, in favor of modlog

Modlog

  • Completely rewrites modlog to log all moderation actions
  • Reworks the output of the all of the modlog commands
  • Adds new command to lookup action by ID

Modmail

  • Full migration to application commands
  • The way modmail reads the configuration has changed to avoid the use of global variables
  • Adds a command to send the text of a rule in a modmail thread
  • Modmail was refactored to remove the usage of any privileged intents from the modmail bot itself
  • Adds an edit button to messages

Nickname

  • Add config option to disable nickname on message

Report

  • The paramter name was changed from report_str to reason

Role

  • Adds a button to cancel editing roles

Whois

  • Now mentions roles in page 1, instead of listing text names
  • Roles are now reveresed, to have the top role be listed first
  • Will no longer display user status

Operation

Application

  • Application will now display discord timestamps instead of plain text for pending application reminder loops

Factoid

  • The /factoid call command now has an optional parameter to ping a member in the factoid display
  • Factoids called using /factoid call will now have a button to allow the invoker to delete the factoid
  • A new /factoid add command has been added, using a modal to create new factoids
  • Fix restricted factoids not working in threads

Forum

  • This changes the way the first message in a forum channel is obtained for initial post rejection detection
  • This fixes initial detection for forums that first message have no content

Relay

  • Fixes SASL login issues, so the bot logs in using SASL now
  • Properly checks if the channel the relay is configured for is configured for automod now

XP

  • A new /xp top command now exists, to display the top 10 XP members in the current guild

Utility

Dictionary

  • New module, searches the Merriam-Webster Dictionary API for the passed word, and displays a definition

Google

  • This module was removed.
  • Youtube was moved to a youtube module

Help

  • Reworks the way the help command displays usage info
  • Mentions applications commands in the output now

HTD

  • Is more clear on what errors were caused and why
  • Adds modulo as a valid operation

Search

  • Now uses application commands
  • Now uses the Tavily API, to replace the deprcating google CSE API

Weather

  • Now uses application commands
  • Has been rewritten to use the open-meteo API
  • The UI has been reworked to be more information rich and better looking

Youtube

  • Now uses applications commands
  • Is now a seperate file, having been decouping from the google extension

Dependencies

Core

  • Python -> 3.13

Prod

  • Unpinned aiohttp
  • Unpinned pips
  • Unpinned pydantic
  • Unpinned typing_extensions
  • New dependency cryptograghy

Dev

  • hypothesis -> 6.155.2
  • pylint -> 4.0.6
  • pytest -> 9.1.0

Documentation

Add detailed documentation for privileged intents usage

What's Changed

  • Add a dictionary extension by @ajax146 in #1523
  • This changes the default speed record to -1 and hides it from view by @ajax146 in #1522
  • This reworks modmail slightly to remove the 7 global config variables by @ajax146 in #1515
  • Replaces the google CSE search with Tavily by @ajax146 in #1514
  • Makes a /xp top command to view the top 10 XP members in the guild by @ajax146 in #1517
  • Completely overhaul the guild config system by @ajax146 in #1530
  • Fix the SASL failure when logging into IRC to fix the IRC link by @ajax146 in #1529
  • Make whois have mentioned roles by @ajax146 in #1528
  • Add suppress_logs flag to hangman start command by @ajax146 in #1526
  • Swaps the duck stats command to discord.User and changes how user is displayed by @ajax146 in #1525
  • Moves XKCD to app commands by @ajax146 in #1521
  • Has the application reminder use a discord timestamp instead of text by @ajax146 in #1520
  • Prevent bots from interacting with ducks by @ajax146 in #1519
  • Make logger mention roles to make logs more colorful by @ajax146 in #1518
  • Add pinging members functionality to /factoid call by @ajax146 in #1513
  • Renames the report param to reason by @ajax146 in #1512
  • Bump aiohttp from 3.13.5 to 3.14.0 by @dependabot[bot] in #1508
  • Add a rule command to modmail by @ajax146 in #1527
  • Improves the way the first message is fetched in new forums by @ajax146 in #1516
  • Adds autocomplete prompts to the unwarn command by @ajax146 in #1524
  • Fix many bugs in recent changes by @ajax146 in #1531
  • Restructure the file system by @ajax146 in #1532
  • Categorize Extensions by @ajax146 in #1533
  • Bump aiohttp from 3.14.0 to 3.14.1 by @dependabot[bot] in #1534
  • Refactor help for app commands, remove extras usage/brief from app commands by @ajax146 in #1536
  • Bump hypothesis from 6.155.1 to 6.155.2 by @dependabot[bot] in #1535
  • Migrate modmail to app commands by @ajax146 in #1542
  • Migrate animal to app commands by @ajax146 in #1541
  • Migrate correct to app commands by @ajax146 in #1540
  • Migrate botinfo to an app command by @ajax146 in #1539
  • Migrate conch to app command by @ajax146 in #1538
  • Migrate burn to an app command by @ajax146 in #1537
  • Update the names of extenions to the new modules system by @ajax146 in #1543
  • Fix default config for new module names by @ajax146 in #1544
  • Fix a typo in the autocomplete parameter name in animal by @ajax146 in #1548
  • Adds a cancel button to the role select UI by @ajax146 in #1547
  • Combine n...
Read more

v2026.06.04

04 Jun 17:52
a153543

Choose a tag to compare

Forum

Fixed bug where forum mark didn't work if OP left
Fixed bug where the pre-checks sometimes didn't run on new forums
Fixed bug where users were able to close their own threads outside of the /forum mark command
Fixed bug where the /forum mark command failed to to case sensitive issues
Added new feature to auto-close threads if the initial message was deleted
Added new feature to auto-close threads if the OP has left the server
Added new /forum reopen command to reopen closed threads

Report

Added feature to ping a role on new reports

Voting

Fixed bug where vote reminders didn't work for 40 minutes every hour

Dependencies

black -> 26.5.1
hypothesis -> 6.155.1
pip -> 26.1.2
pydoclint -> 0.8.6
pytest-asyncio -> 1.4.0

What's Changed

Full Changelog: v2026.05.13...v2026.06.04

v2026.05.13

13 May 18:32
e7c61d5

Choose a tag to compare

Animal
Fixed typo in error message when API key is missing

Forum
Added code to support a forum channel

Moderator
Fixed typo in ban command where the default purge days was incorrect

Voting
Fixed a bug where most interations with the vote would say failed
Added a reminder system

Dependencies
Replaced pipenv/pipfile with UV/pyproject
Removed pipenv as a dependency
Removed PyNaCl as a dependency
Pinned aiohttp to 3.13.5
Pinned setuptools to 80.9.0
Dateparser -> 1.4.0
Gitpython -> 3.1.50
Pip -> 26.1.1
Hypothesis -> 6.152.7

What's Changed

Full Changelog: v2026.04.18...v2026.05.13

v2026.04.18

19 Apr 03:02
39bbd06

Choose a tag to compare

Core

Removes non-working auto push CI/CD rules

Automod

Add new rule to block messages based on hash

Duck

Fix the rate limit issue in duck killers/friends

Honeypot

Add new feature to the bot to create a honeypot channel

Logger

Fixes bug when user had a gif profile picture

Moderation

Fixes warns not working when in a thread

Nickname

Nickname now changes nicknames on message send

Rule

Rules can now have titles in addition to descriptions

Voting

The vote command now requires channel selections
Adds an abstain button to votes
Adds ability to specific an eligible role for voter participation
Allows multiple channels with multiple different role(s) to be selected
Automated pass/fail analysis on vote completion

XP

Fixes a bug with excluded channels not working
Fixes a bug with bot commands not being properly ignored

Depedencies

black -> 26.3.1
hypothesis -> 6.151.13
pip -> 26.0.1
pylint -> 4.0.5
pytest -> 9.0.3

What's Changed

Full Changelog: v2026.03.23...v2026.04.18

v2026.03.23

24 Mar 00:34
e0fd890

Choose a tag to compare

Core
Fix message cog for forwarded messages
Removed old and inaccurate help menu in favor of new one
Allows some slash commands to have errors be default ephemeral

Config
Fixes issue where new configs started as being invalid

Duck
Improves reliability and consistency in the user list output
Adds new config option to allow duck to appear in every channel in the category

Factoid
Improves fallback system
Crops factoid info for long factoids
Adds missing permission check on dealias

Hangman
Fixes the started by in the footer

Logger
Rewrites logger nearly completely to be more robust

Modlog
Fixes bug so that modlog actually works with larger databases
Fixes bug with moderators that have left breaking the output

Report
Adds config option to allow reports to be anonymous

XP
New module, allows XP based role assignment

Dependencies
black -> 26.1.0
dateparser -> 1.2.2
discord.py -> 2.6.4
emoji -> 2.15.0
flake8 -> 7.3.0
flake8-annotations -> 3.2.0
flake8-bugbear -> 25.11.29
gitpython -> 3.1.46
hypothesis -> 6.150.2
isort -> 7.0.0
typing_extensions -> 4.15.0
pip -> 25.3
pipenv -> 2026.0.3
pydantic -> 2.12.5
pydoclint -> 0.8.3
pylint -> 4.0.4
pynacl -> 1.6.2
pytest -> 9.0.2
pytest-asyncio -> 1.3.0
pyyaml -> 6.0.3

What's Changed

Full Changelog: v2025.06.20...v2026.03.23

v2025.06.20

20 Jun 18:29
007835f

Choose a tag to compare

Core
Fixed a typo in the docstring for interaction check
The config.yml path is now set in the .env file
The default.env file now defaults debug to 0
A config item was added to change the owner of the bot
The CI was refactored to be in one file
New CI was added to auto close certain dependabot PRs
A new central file to do moderation actions was added, to improve consistency
Slash command logging was improved greatly
TS will now DM people warnings who message the bot, clearly stating that all messages are logged

Application
New config item to auto reject apps after inactivity for X days was add

Automod
Replaces several functions from protect and who
Automod was rewritten to be more powerful
You can now mute with Automod
You can now do a silent punishment with Automod
Regex filters were fixed

Bot
The startup time is now a dynamic timestamp instead of text

Burn
Command now works on reply

Correct
Now has a clean error when the corrected message will exceed length limits

Debug
New debug commands have been added

Duck
Improve the random chance function
Ducks doing a timeout is now a config option

Extension
Adds a command to enable all disabled extensions in the current guild

Factoid
No more prefix command for factoid all
Factoid search output was improved and sped up a bit
Make the factoid json file be named the invoking factoid name
Adds a new /factoid call command to call factoids via slash command
Improves the messaging on factoid forget to clearly show what aliases will be deleted
Fixes a bug where factoid all didn't work if there are no factoids in a guild

Hangman
Hangman start is now a slash command
Hangman no longer breaks on caps
The person who starts hangman cannot play
The owner of the game can add more guesses
The game now shows what letters have been guessed
The help command on the hangman game was updated

Hello
Was turned into a slash command

HTD
A rouge print statement was removed from the code

IRC
IRC now uses SSL to login
IRC messages are now processed by automod

Joke
The joke category filter has been improved

Logger
Fixes a typo in the log for missing file reuploads

Moderator
Replaces several functions from protect and who
Ban, unban, kick, mute, unmute, warn, and warning clear were all made into slash commands
An individual unwarn command was added

Modlog
Logs all ban and unban actions in a given channel
Stores ban time, reason, moderator, etc into the database

Modmail
A new command to list users banned from modmail was added
The alias command shows a clear message if no aliases are defined
Self/contact success commands now link to the new thread
Fixes sending files to the user

News
Is now a slash command
Filters out undesirables news.google.com links

Notes
Replaces several functions from protect and who
This is now the source of all commands to read and edit notes
Notes all was dramatically rewritten
Permission issues with notes were fixed

Paste
The UI of paste was slightly rewritten
Paste has less of a chance of deleting the original message if the pasting action failed

Purge
Replaces several functions from protect and who
Purge amount and duration were combined into one command
Purge is now a slash command
Better information output and erroring from purge

Report
Allows users to report information, which will be sent into a given channel

Role
Allow a dynamic list for /role self

Whois
Replaces several functions from protect and who
This is now paginated, with better info about notes and warnings
A small redesign to the existing information was done
New flags were added to the whois output to see extra information

Dependencies
aiocron -> 2.1
dateparser -> 1.2.1
discord.py -> 2.5.2
emoji -> 2.14.1
flake8 -> 7.2.0
flake8-bugbear -> 24.12.12
gitpython -> 3.1.44
hypothesis -> 6.135.10
inflect -> 7.5.0
irc -> 20.5.0
isort -> 6.0.1
pip -> 25.1.1
pipenv -> 2025.0.3
pydantic -> 2.9.2
pydoclint -> 0.6.6
pylint -> 3.3.7
pytest -> 8.4.0
pytest-asyncio -> 1.0.0
unidecode -> 1.4.0
Removed ib3

What's Changed

Read more

v2025.02.18

18 Feb 23:47
6e48bf9

Choose a tag to compare

Core
Icon icons URLs have all been replaced with another source

Application
Minor typo was fixed

Factoid
.factoid all is now retired in favor of /factoid all

Hug
More hug statements

Modmail
Modmail aliases command now shows all the aliases

Dependencies
aiohttp -> 3.10.11
black -> 25.1.0
flake8 -> 7.1.1
flake8-bugbear -> 24.8.19
flake8-docstrings-complete -> 1.4.1
hypothesis -> 6.122.4
pip -> 24.3.1
pipenv -> 2024.4.1
pytest-asyncio -> 0.25.0

What's Changed

Full Changelog: v2024.08.19...v2025.02.18

v2024.08.19

19 Aug 22:18
5b3a792

Choose a tag to compare

Application
Add manual changes to the application management channel

Backup
Adds a data backup command

Extension
Adds ability to list disabled extensions

Factoid
Make factoid search way more useful, showing what and where your term was found
Allows factoid prefix to be longer than one character

Github
Make description optional

Modmail
Adds ability to auto-reject threads based on regex

Role
Fixes bug where role menu strips all roles on timeout

Dependencies
bidict -> 0.23.1
certtifi -> 2024.7.4
emoji -> 2.12.1
hypothesis -> 6.108.3
pip -> 24.1.2
pydantic -> 2.8.2
pydoclint -> 0.5.6
pylint -> 3.2.6
pytest -> 8.3.2
pytest-asyncio -> 0.23.8

What's Changed

Full Changelog: v2024.07.06...v2024.08.19

v2024.07.06

06 Jul 17:51
c1f173f

Choose a tag to compare

Application
Will now properly reject appliactions from people who have left the server

Duck
Will now show the could have been time if you miss

Factoids
Adds a config to force disable all embeds, relying only on text
Fixes looping restricted factoids
Deprecates .factoid all
Makes /factoid all, a much more powerful factoid all command

htd
Restructured the file, no functionality change

Logger
Will now log a WARN if reuploading files failed

Modmail
If a message was edited without changing content, nothing is sent to the mods
The error message for a user not being in the guild was made more clear

Protect
Will now log a WARN if reuploading files failed

Winerror
Winerror is now paginated per category, with a maximum of 10 errors per page

Voting
New extension. Allows for blind and anonymous mod votes

Other
Type hints and doc strings have been standardized and added to every function

Workflows
Add a flake8 workflow

Unit tests
Improved the htd unit tests

Dependencies
discord.py -> 2.4.0
inflect -> 7.3.1
hypothesis -> 6.105.0
pip -> 24.1.1
pipenv -> 2024.0.1
pytest -> 8.2.2
pytest-asyncio -> 0.23.7

New Dependencies
flake8 = "==7.1.0"
flake8-annotations = "==3.1.1"
flake8-bugbear = "==24.4.26"
flake8-docstrings-complete = "==1.3.0"
flake8-modern-annotations = "==1.6.0"
flake8-variables-names = "==0.0.6"
pydoclint = "==0.4.1"

What's Changed

Full Changelog: v2024.04.30...v2024.07.06

v2024.04.30

30 Apr 17:58
0eb63f1

Choose a tag to compare

Core features
A universal DM logging function is created, better logging DMs from all 3 bots
A ton of styling and formatting changes occured, improving type hints, variable names, and doc strings

Animal
Restructure the cog to be a bit more readable

Application
Fixes bugs where people were falsely assumed to have left the server

Help
Sorting is now case insensitive
Custom modmail commands are now searchable in the standard help menu

Modmail
Fixed a bug where the forum channel wouldn't be properly found
Fixed a bug where new modmails pinged nobody
Moved the disabled check to the setup function, so modmail won't try and load if it's disabled

Protect
Fixes a bug where people were falsely assumed to not be in the channel when warning them

Role
Added a missing return to ensure that the role commands permission check actually works

Who
Note writers is now a set config entry instead of being based on kick members

Dependencies
aiohttp -> 3.9.4
black -> 24.4.2
emoji -> 2.11.1
hypothesis -> 6.100.2
inflect -> 7.2.1
pytest -> 8.2.0

What's Changed

Full Changelog: v2024.04.13...v2024.04.30