Releases: r-Techsupport/TechSupportBot
v2024.08.19
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
- Bump hypothesis from 6.105.0 to 6.108.3 by @dependabot in #1092
- Makes description optional on github by @ajax146 in #1091
- Adds more details to factoid search by @ajax146 in #1089
- Allows factoid prefix longer than 1 character by @ajax146 in #1087
- Add application changes to the management channel by @ajax146 in #1086
- Adds /extension list_disabled to list all disabled extensions by @ajax146 in #1085
- Add automatic rejections to modmail to block threads from being created by @ajax146 in #1084
- Adds a backup command by @ajax146 in #1088
- Bump pytest from 8.2.2 to 8.3.1 by @dependabot in #1100
- Bump emoji from 2.11.1 to 2.12.1 by @dependabot in #1013
- Bump pip from 24.1.1 to 24.1.2 by @dependabot in #1073
- Bump certifi from 2024.6.2 to 2024.7.4 by @dependabot in #1071
- Bump pydantic from 2.7.0 to 2.8.2 by @dependabot in #1068
- Bump bidict from 0.22.1 to 0.23.1 by @dependabot in #890
- Bump pylint from 3.1.0 to 3.2.6 by @dependabot in #1093
- Bump pydoclint from 0.4.1 to 0.5.6 by @dependabot in #1082
- Bump pytest-asyncio from 0.23.7 to 0.23.8 by @dependabot in #1114
- Bump pytest from 8.3.1 to 8.3.2 by @dependabot in #1113
- Fixes the role menu not timing out properly by @ajax146 in #1130
Full Changelog: v2024.07.06...v2024.08.19
v2024.07.06
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
- Adds proper type hints to every argument in every function, and every return value by @ajax146 in #967
- Bump hypothesis from 6.100.2 to 6.103.0 by @dependabot in #1018
- Bump pytest from 8.2.0 to 8.2.1 by @dependabot in #1010
- Bump pytest-asyncio from 0.23.6 to 0.23.7 by @dependabot in #1011
- Bump pipenv from 2023.12.1 to 2024.0.1 by @dependabot in #1033
- Update every doc string to describe what the function or class does with numpy standards by @ajax146 in #1003
- Add flake8 and some plugins by @ajax146 in #945
- Add old workflows back by @ajax146 in #1044
- Reupload failed is now a warning not an info by @ajax146 in #1042
- Times on misses on ducks now by @ajax146 in #1041
- Removes content was unchanged from modmail by @ajax146 in #1040
- Improve error message by @ajax146 in #1039
- Disable embeds config, fix restricted loops by @ajax146 in #1038
- Add a try/except to application fetch member by @ajax146 in #1037
- Bump hypothesis from 6.103.0 to 6.103.1 by @dependabot in #1029
- Bump pytest from 8.2.1 to 8.2.2 by @dependabot in #1028
- Bump hypothesis from 6.103.1 to 6.103.2 by @dependabot in #1050
- Bump flake8 from 7.0.0 to 7.1.0 by @dependabot in #1049
- Bump flake8-annotations from 3.0.1 to 3.1.1 by @dependabot in #1048
- Bump flake8-bugbear from 24.2.6 to 24.4.26 by @dependabot in #1047
- Bump Discord.py to version 2.4.0 by @ajax146 in #1055
- Bump hypothesis from 6.103.2 to 6.104.0 by @dependabot in #1056
- Bump pip from 24.0 to 24.1 by @dependabot in #1051
- Adds a /voting command with the ability to do blind or anonymous voting by @ajax146 in #1035
- Fix grabs random nsfw check by @ajax146 in #1045
- Bump hypothesis from 6.104.0 to 6.105.0 by @dependabot in #1070
- Bump inflect from 7.2.1 to 7.3.1 by @dependabot in #1066
- Bump pip from 24.1 to 24.1.1 by @dependabot in #1062
- Moves functions around in htd.py, makes unit tests better by @ajax146 in #1058
- Make winerror paginated by @TheKrol in #1015
- Raise ValueError on empty message by @ajax146 in #1046
- Make factoid all into a slash command by @ajax146 in #1036
Full Changelog: v2024.04.30...v2024.07.06
v2024.04.30
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
- Makes modmail fetch channels properly and be able to ping roles by @Cpt-Dingus in #936
- Add return so that role command doesn't error on failed permission check by @ajax146 in #941
- Bump black from 24.3.0 to 24.4.0 by @dependabot in #943
- Condense animal into 1 cog by @ajax146 in #942
- Fix all flake8 ANN202 issues by @ajax146 in #953
- Fix all flake8 DOC405 issues by @ajax146 in #952
- Fix all flake8 ANN205 issues by @ajax146 in #951
- Fix all flake8 B008 issues by @ajax146 in #950
- Fix all flake8 DCO021 issues by @ajax146 in #949
- Fix all flake8 DCO051 issues by @ajax146 in #947
- Fix all flake8 DOC104 issues by @ajax146 in #946
- Creates a universal DM logging function by @ajax146 in #940
- Sorts help menu case insensitive, reworks modmail help by @ajax146 in #939
- Fix all flake8 DCO031 issues by @ajax146 in #948
- Fix all flake8 DOC105 issues by @ajax146 in #957
- Fix all flake8 DCO024 issues by @ajax146 in #956
- Fix all flake8 DOC110 issues by @ajax146 in #955
- Fix all flake8 E713 issues by @ajax146 in #954
- Fix first 100 flake8 ANN201 issues by @ajax146 in #960
- Fix all flake8 DOC102 issues by @ajax146 in #959
- Fix all flake8 ANN003 issues by @ajax146 in #958
- Fix first 49 flake8 DCO020 issues by @ajax146 in #961
- Fix many small warnings in flake8 by @ajax146 in #962
- Bump pytest from 8.1.1 to 8.2.0 by @dependabot in #988
- Bump hypothesis from 6.100.1 to 6.100.2 by @dependabot in #987
- Bump black from 24.4.0 to 24.4.2 by @dependabot in #976
- Make note_readers config by @ajax146 in #981
- Swap get_member to fetch_member in application so no members are missed by @ajax146 in #979
- Bump inflect from 7.2.0 to 7.2.1 by @dependabot in #973
- Move warn to use permissions for to hopefully be more accurate by @TheKrol in #968
- Bump emoji from 2.11.0 to 2.11.1 by @dependabot in #970
- Moves the modmail config check to setup by @ajax146 in #980
- Bump aiohttp from 3.9.2 to 3.9.4 by @dependabot in #966
Full Changelog: v2024.04.13...v2024.04.30
v2024.04.13
Core features
Slash command logs now include user ID
Animal
.fox now exists
Application
Application reminders will now show both user and display name
Application reminders use code blocks to avoid markdown issues
Factoids
Replacing an embed but not message now works properly again
Responses are now way clearer at what factoid is being targetted, always matching what you sent
Info has been reworked to now show aliases as all possible calls
Google
.g I and .g S will now work, in addition to lowercase versions
HTD
Some comment and help menu typos were fixed
Hug
Hug now works on reply
Modmail
Adds a brand new modmail extension
Nickname fix
Adds a reason to the audit log entry containing who ran the command
Dependencies
black->24.3.0
emoji->2.11.0
gitpython->3.1.43
hypothesis->6.100.1
idna->3.7
inflect->7.2.0
pydantic->2.7.0
pylint->3.1.0
pytest->8.1.1
pytest-asyncio->0.23.6
What's Changed
- Bump hypothesis from 6.98.4 to 6.98.5 by @dependabot in #875
- Keep existing message when modifying factoid if none is specified by @dkay0670 in #888
- Add capitalized I and S aliases for google by @dkay0670 in #883
- Make hug work when replying to someone by @dkay0670 in #882
- Bump pydantic from 2.6.1 to 2.6.4 by @dependabot in #909
- Bump hypothesis from 6.98.5 to 6.100.0 by @dependabot in #921
- Bump pytest-asyncio from 0.23.5 to 0.23.6 by @dependabot in #915
- Bump pytest from 7.4.4 to 8.1.1 by @dependabot in #907
- Bump black from 24.2.0 to 24.3.0 by @dependabot in #913
- Bump pylint from 3.0.3 to 3.1.0 by @dependabot in #897
- htd command fixes by @dkay0670 in #881
- Bump gitpython from 3.1.41 to 3.1.43 by @dependabot in #920
- Makes factoid messages clearer, fixes a bug, and cleans up some code by @ajax146 in #865
- Adding fox to animal by @TheKrol in #876
- Update audit log with who did nickname command by @TheKrol in #877
- Update application with display name and name in code blocks by @TheKrol in #878
- Bump hypothesis from 6.100.0 to 6.100.1 by @dependabot in #930
- Bump inflect from 7.0.0 to 7.2.0 by @dependabot in #925
- Bump emoji from 2.10.1 to 2.11.0 by @dependabot in #924
- Bump pydantic from 2.6.4 to 2.7.0 by @dependabot in #933
- Bump idna from 3.6 to 3.7 by @dependabot in #932
- Add the modmail extension by @Cpt-Dingus in #884
New Contributors
Full Changelog: v2024.02.13...v2024.04.13
v2024.02.13
Changelog
Core features
The generate embed function is now more flexible
Animal
Now incorporates cat and dog
Now has a frog command
Application
Applications are now always sorted by recieve time in the perodic reminder
Applications with a changed name now show old name
Applications auto approved now show what role caused it
User ID is now shown at the bottom of applications
Fixed typo in name of application status column in postgres
Cat
Was replaced by animal
Dog
Was replaced by animal
Duck
The missed embed now clearly says you missed
Extension
Extension loading and unloading has now been fixed
Factoid
Factoid text fallback in certain malformed embed config cases now works properly
Add disabled, protected, and restricted factoid properties
New config entry for factoid admins
Hidden status can now only be changed by factoid admins
The info embed now shows if a factoid is hidden, protected, disabled, and/or restricted
Help
Help now properly indexes all aliases
Calling just .help will now explicitly say all commands
Nicknamefix
Manual way to fix a users nickname if they didn't get fixed automatically.
Protect
Purge now doesn't count it's own invocation message
Rule
Calling multiple rules now only sends a single message
Who
Status now shows the correct status instead of always offline
Whois for mods now shows if pending application and if banned from making applications
Changed the way that warnings are shown in whois
Fixed a minor typo in note_bypass config description
Dependencies
black -> 24.2.0
emoji -> 2.10.1
gitpython -> 3.1.41
hypothesis -> 6.98.4
pip -> 24.0
pipenv -> 2023.12.1
pydantic -> 2.6.1
pytest -> 7.4.4
pytest-asyncio -> 0.23.5
unidecode -> 1.3.8
Unit tests
Unit tests have been re organized to be more clear and readable
Commit list
- Bump hypothesis from 6.92.1 to 6.92.2 by @dependabot in #795
- Bump hypothesis from 6.92.2 to 6.92.9 by @dependabot in #824
- Bump pytest from 7.4.3 to 7.4.4 by @dependabot in #798
- Bump pytest-asyncio from 0.23.2 to 0.23.3 by @dependabot in #799
- Bump unidecode from 1.3.7 to 1.3.8 by @dependabot in #823
- Bump gitpython from 3.1.40 to 3.1.41 by @dependabot in #821
- Bump hypothesis from 6.92.9 to 6.97.4 by @dependabot in #848
- Bump pipenv from 2023.11.15 to 2023.11.17 by @dependabot in #834
- Bump pytest-asyncio from 0.23.3 to 0.23.4 by @dependabot in #841
- Bump black from 23.12.1 to 24.1.1 by @dependabot in #840
- The duck embed now says you missed more clearly by @ajax146 in #825
- Factoid info now shows if factoid is hidden by @ajax146 in #817
- Minor application improvements by @ajax146 in #816
- Fix status, add application information to whois by @ajax146 in #815
- Condense rule get into a single embed by @ajax146 in #814
- Make purge not count deleting it's own message by @ajax146 in #813
- Improve help functionality, fix some bugs, improve code by @ajax146 in #812
- Fix extension load/unload by @ajax146 in #810
- Fix factoid fallback in edge cases by @ajax146 in #809
- Bump hypothesis from 6.97.4 to 6.98.3 by @dependabot in #856
- Moves unit tests to folders based on where the original file is located by @ajax146 in #857
- Bump pip from 23.3.2 to 24.0 by @dependabot in #853
- Bump pipenv from 2023.11.17 to 2023.12.1 by @dependabot in #852
- Bump pytest-asyncio from 0.23.4 to 0.23.5 by @dependabot in #862
- Bump aiohttp from 3.9.1 to 3.9.2 by @dependabot in #844
- Bump emoji from 2.9.0 to 2.10.1 by @dependabot in #849
- Makes all arguments on generate_basic_embed optional by @ajax146 in #818
- Bump pydantic from 2.5.3 to 2.6.1 by @dependabot in #854
- Add user ID to bottom of application by @ajax146 in #858
- Bump hypothesis from 6.98.3 to 6.98.4 by @dependabot in #861
- Fix roll->role typo in who.py note_bypass config desc by @ajax146 in #864
- Add 3 new factoid properties by @ajax146 in #859
- Add manual nickname command by @ajax146 in #860
- Animal by @TheKrol in #866
- Bump black from 24.1.1 to 24.2.0 by @dependabot in #869
- Fix typo in the application DB column name, stauts->status by @ajax146 in #863
- Hide warnings on whois if there are no warnings by @ajax146 in #870
Full Changelog: v2023.12.26...v2024.02.13
v2023.12.26
Core features
Config is now stored in postgres
MongoDB is no more
Extensions were completely restructured
The entire core of the bot was completely refactored
Dog
New extension, similar to cat but now .dog prints a picture of a dog
Duck
Add a duck spawn command for debugging
Ducks are now spawned upon a release
Release is now on a hard cooldown
Listener
Now stored in postgres
Github
Will not load without an API key
Help
Is now searchable instead of only by extension name
Now includes slash commands and aliases
Nickname
Is now stored in a dedicated file
Rules
Now stored in postgres
Winerror
Fixed a minor error in hresult output
Dependencies
black -> 23.12.1
dateparser -> 1.2.0
emoji -> 2.9.0
hypothesis -> 6.92.1
isort -> 5.13.2
pip -> 23.3.2
pipenv -> 2023.11.15
pydantic -> 2.5.3
pylint -> 3.0.3
pytest-asyncio -> 0.23.2
Documentation
A huge documentation refactor occurred; most files were moved or renamed
The start of a development guide has been created, detailing how to develop and interact with the core of the bot.
Other
http functions got moved to a dedicated file
v2023.11.07
Core features
Fixed error when logging DMs
Improve error handling
Adjusted ratelimiting to be faster and less sensitive
Application
New applications will no longer say pending
The regular notification now says all pending applications
HTD
Fix minor typo in documentation
Logger
Now shows thread ID and channel ID
Hardcodes the avatar ID so users changing avatar doesn't break it
Slowmode
Add a slowmode command to modify slowmode of a given channel by the number of seconds
Winerror
New extension!
Searches the winerror database based on given input
Dependencies
black -> 23.10.1
gitpython -> 3.1.40
hypothesis -> 6.88.3
pip -> 23.3.1
pipenv -> 2023.10.24
pylint -> 3.0.2
pytest -> 7.4.3
Other
Code formatting changes
v2023.10.17
Core features
HTTP caching has been fixed
A global command rate limiter has been added
A few logging typos were fixed
Duck
Replaces cooldown with a config to disable manipulation
Factoids
Factoids no longer mention the invoker if someone was mentioned in the call
News
An invalid topic in news now defaults to generic
Protect
Alert cache now works again
Role
Adds error handling to the role extension
Removes the drop-down box after a selection has been made
Adds a lock to prevent more than 1 person from modifying roles at the same time on the same person
Adds timeout handling to prevent a timeout from removing all roles
Makes confirmation or rejection messages use the confirm/deny embeds
Adds proper type hints to the entire file
Makes final response show what roles were added and removed
Will ensure that a success message isn't shown if it isn't successful
Dependencies
gitpython -> 3.1.38
hypothesis -> 6.88.1
typing_extensions -> 4.8.0
pip -> 23.3
pipenv -> 2023.10.3
pydantic -> 2.4.2
pylint -> 3.0.1
Other
Minor code formatting changes
v2023.10.03
Core features
Fixed a harmless bug causing an error when pages were trashed
Application
Has been completely rewritten and reimagined from the ground up
Now uses the new modal system
Relay
Fixed a double space in reaction messages
Role
Added the role manage command to the context menu
Dependencies
black -> 23.9.1
gitpython -> 3.1.37
hypothesis -> 6.87.1
motor -> 3.3.1
pipenv -> 2023.9.8
pylint -> 3.0.0
pytest -> 7.4.2
unidecode -> 1.3.7
Other
Moved event handlers to a dedicated file
Replaced all import base with from base import
v2023.09.01
Core features
You can now set a channel for guildless events to be sent to, instead of only to the owners DMs
A new .config reset command has been added, allowing for the config to be reset
.config patch now confirms the correct guild config is being modified
LoopCogs will not run multiple times in the same channel anymore
Reboot no longer errors if IRC is disabled
The help command will now show if the extension is disabled, unloaded, or not found
Extensions requiring API keys will fail to load if API key is missing
The core logging system has been rewritten to be more robust
Any role changes the bot does will now be logged with reasons in the audit log
Autoreact
New extension added
Cat
New extension added
Duck
The way times have been processed has been changed to use message created_at times
All duck messages will now include the exact time in the footer
Ducks killed or befriended in private channels will no longer be logged
Factoid
Will no longer error if IRC is disabled
Factoid search has been fixed
Looped factoids are properly sent to IRC
Factoid loops work again
Grab
If no channels are whitelisted, grab works in every channel
Joke
API limit was raised
ISS
Rewrite how embeds are built
Logger
Logger will not error if file uploads are too large
Logs will now contain the original message ID
Logs will now show the global nickname and server nickname, if they are different
Protect
Pastes will not fail if files are too large
Mute is better at interpreting time
Relay
Won't load if IRC is disabled
Role
Slash commands how have proper descriptions
/role assign is renamed to /role manage
WYR
Questions have been moved to a dedicated file
XKCD
.xkcd # works now
Dependencies
dateparser is now a dependency
discord.py -> 2.3.2
emoji -> 2.8.0
gitpython -> 3.1.33
hypothesis -> 6.83.0
motor -> 3.3.0
pipenv -> 2023.8.28
pydantic -> 2.3.0
Other
General improvements to http calls and performance
auxiliary.py and util.py were merged
Postgres table declaration and usage have been moved to a new location
Fixed the logging for nickname filter being unable to DM
New guild configs will now have all loaded extensions enabled by default