- Change command list MD file location.
- Replace documentation files with new, reworked content.
- Buff raffle currency rewards and guarantee recipe items.
- Fixed rate limits causing
reddit
to break.
- Added a character limit argument to
impersonate
. - Added a beginning state argument to
impersonate
. - Extended the results of
reddit
to posts made within the last week. - Added a last-message-processed cache to
collector_clockwork
to avoid collecting duplicates.
- Moved the
lyrics
command to thesearches
category, since music is no longer active.
- Added an optional duplicates flag to
filtersell
. - Corrected the usage example for
declinesuggestion
.
- Raw edit and deletion event handling, and their payloads have been added.
- Deleting and editing uncached messages is now logged with whatever data we could pull.
- Warframe fissures have been updated.
- Osu! got an option to display stats for different modes.
- Some Docker image fixes have been added due to Jessie missing repo keys.
- Discord object mentions have been fixed for
translate
.
- Re-enable
award
andvault
,gtv
will remain disabled. - Disabled the
award
,givetovault
andvault
commands. - Check the race existence before trying to add a participant.
- Auto-format chang-log.
- Minor f-string fixes, where they were used when no dynamic arguments were present.
- Chains are now stored in
./chains/<uid>.json.gz
.
- The
trade
command has been added, inspired by Warframe's trade mechanics. - Market cleaning functions. Items expire after 7 days. Happens automatically every 60s or every
mlist
call. - The
addemote
command allows you to easily add an emote to your server.
- The
giveitem
command has been disabled. - The
givecurrency
command has been disabled. - Minor formatting, cleaning and docstring fixes.
- Listing the market triggers the market cleaning function.
- Selling an item on the market will show the expiration time (in UTC).
- Selling something on the market now has a minimum listing price of 10 Currency.
- Created the
GenericResponse
class.
- The
mutedusers
command shows users who are text-muted and hard-muted. - The
auto_punish
module will automatically apply a set punishment when a user reaches N warnings. - Use
autopunish
to toggle the feature on and off. - Use
autopunishlevels
to set the desired levels and punishments, or view the current ones.
- Created the
DialogueResponse
class. - Created the
DialogueCore
class. - Created the
Ongoing
class.
- Fix the
marketlist
command in case of items that can't be found. - Fix the
marketsell
command overflowing when given ludicrous numbers. - Fix the
imdb
command erroring due to the encoding argument. - All dialogues can now be cancelled.
- Dialogues now return
DialogueResponse
for easier marker reading and response generation. - Dockerfile bumped to use Python 3.9.
- Replaced the
aiml
package withpython-aiml
, an updated fork. - Recipes and items now use the database entries as a fallback if the manifest fails to load.
- Recipes and items now read the repository manifest instead of the database.
- Dialogue functions now use the dialogue core class.
- Ongoing functions now use the ongoing class.
- General code inspection formatting and cleaning.
- Replaced requests with aiohttp in metacritic.
- The Pympler lib and
stats()
methods are no longer needed. - The entire
family
module. It was unused and uninteresting without the broken family tree.
- The
blackjack
command has been added. It functions as you'd expect, but there is no multiplayer.
- Fixed
destroyitem
command and added a safeguard for sharding. - Tweaked dialogue controls to include an ongoing check.
- Updated
buyupgrade
to include a quantity parameter when quick-buying.
- Added the
mbti
command for viewing mbti types, functions, and compatibility between types.
- Added an option to buy multiple levels of an upgrade at once for
buyupgrade
.
- Added
safebooru
to theGalleryClient
handler and removed its discrete handler. - Changed
kitsunemimi
,nekomimi
, andusagimimi
to utilize the new handler. - Refactored the gallery commands to be more uniform.
- Added an image size (resolution) filter to the
GalleryClient
. - Added a progress bar to the
forcedataupdate
command embed.
- Added more exception catches. Never too many...
- Fixed the
youtube
command when parsing an empty playlist. - Switched the
crypocurrency
command to the new API. - Removed
__slots__
from some reddit related classes, because it broke them. - Removed an unnecessary use of
str.join
. Not everything needs to be joined! - Added an additional error catch to the
translation
command. - Added an exception catch to
antispam_watcher
andanticaps_watcher
. - Fix
visualnovelquote
html parsing. - Merged
inspect
andviewrecipe
commands. - Added
KeyboardInterupt
catch torun.py
for development purposes. - Reimport
ApexSigma
inrun.py
after installing requirements if the original import fails.
- Removed the
viewrecipe
command.
- Fixed argument parsing for
inrole
. - Added a user agent to
mapsearch
so it actually works. - Added a universal user agent for requests.
- Filled in docstrings for metacritic files.
- Removed the
busplus
command.
- The
bazaar
command; a daily shop for rare items. - The
bazaarstats
command; shows item and currency statistics for bazaar usage.
- Added a streak counter to the footer of relevant quiz commands.
- ChatterBot has been temporarily disabled to monitor memory usage without it active.
metacritic
command to view scores for games, movies, tv shows, and music albums.
- Tweaked
urbandictionary
to display the top rated definition. - Added a
--random
option tourbandictionary
to display a random definition instead. - Refactored
connectfour
to use theraw_reaction_add
event to avoid an internal cache expiring. - Fixed
anmechargame
andmangachargame
... Hopefully. - Fixed web scraping in the
osu
command. - Fixed
vnchargame
command. - Added tip text to the embed footer for
inspect
. - Removed a redundant function and filled in a few docstrings.
- Fixed
inventory
argument parsing and updated description. - Fixed
finalfantasyxivtimers
. - Replaced all instances of
arrow.Arrow.timestamp
witharrow.Arrow.int_timestamp
. - Added safeguards to
anmechargame
mangachargame
andvnchargame
. - Fixed argument parsing in
translation
.
- Added
gc
as an alias forgivecookie
.
- Removed hyphenated words as a possibility for
hangman
. - Added the number of winners to raffle embeds when there is more than one winner.
- Fixed
kanji
parsing of parts and variants - Refactored
whoplays
.
- Added alias for
inspect
- Added alias for
removeinteraction
- Tweaked
givecookie
to show the authors display name ifdelete_commands
is enabled. - Added a 'no issue' mode for
approvesuggestion
to approve suggestions without creating an issue on GitLab.
- Switched back to the old bash.org URL for the
bash
command. - Tweaked the
combine_names
function and fixed its references.
- Tweaked the module loader to ignore unnecessary modules if
text_only
ormusic_only
are enabled. - Tweaked the module loader to load the
help
module ifmusic_only
is enabled.
- Added a global user-agent header to the NSFW core.
- Tweaked the NSFW core and e621 command to support the new endpoint.
- The
danbooru
command has been added. Never enough porn.
- Replaced favicon urls in the nsfw core with imgur pngs because Discord doesn't support ico files.
- Disabled the
foodrecipe
command because the API has been shutdown. Possible future rework.
- You can now specify an index for the Redis database in the
cache.yml
config file with a value under adb
key. When missing, the default is 3 (cause the number looks like Sigma).
- The
raffle
command now accepts awinners:n
argument wheren
is the number of winners. - The
hide
interaction command has been added. That makes... 30? FUCKING 30?!
- Refined the
raffle
command description to be less wordy.
- The shop now has emote reaction controls instead of text input.
- Added the
gamblingstats
command to show currency gains, losses, and net changes for gambling minigames.
- Refactored the
bash
command to make more sense. - Switched an embed response in the
weather
command to use a generic response embed.
- Added safe guard against muting Sigma with
textmute
which caused an error. - Added an try clause in
massmove
for users no longer in a voice channel. - Added a missing requirement to
connectfour
's module.yml file. - Fixed errors in
cryptocurrency
and rounded long floats. - Added guard clauses to certain events to prevent an
AttributeError
. - Added a user agent to the
weather
command in compliance with Nominatim's ToS.
- Adapted the
connectfour
command to use emote controls rather than message controls.
- Flag emote auto translating. If enabled, reacting to a message with two flags will translate it.
- Added a query limit safeguard to the
translation
command.
- Added an
--ids
argument to thespouses
command. - Removed old proposal lines from the
divorce
command.
- The
slotstats
command shows payout rates for the slot machine with the given bet amount.
- Tweaked string stripping in the
addreactor
command.
- Added a missing channel permission in the
temproom
command. - Channel permissions in the
temproom
command are now a set of kwargs. - The description of the
purge
command is now more concise and up to date. - The description of the
filteroverrides
command no longer includesasciinames
.
- The
editline
command has been added for editing existing lines in custom lists.
- Enabled the use of
removeline
for anyone on public lists. - Minor refactors for various custom list commands.
- Added more creator permissions for temporary voice channels.
- The
tempcategory
command has been added. This sets the category used for temporary channels.
- Vigor command display icons and more data, such as enchantments.
- Enchantment enchanter counting fixes.
- Fixed typos.
- Fixed a
RuntimeError
inenchantment.py
.
- The
heal
command has been added for the event. You can heal all your missing vigor, or a specified amount. You can also heal others. - Event leaderboard commands, which are
>>topsweets
and>>toppumpkin
have been added. - The
grow
command was added that lets you grow your pumpkin. The more sweets you spend at once, the more it grows. The formula determining the gained weight is a positive exponential curve. - Added the
steal
command that has consequences if you fail. It's used for stealing sweets. Failure means getting cursed, losing lots of vigor, and losing some Kud. - A passive sweets adding mechanism has been added to messages. If the message and the guild meet criteria, a piece of candy will be given to the user. There's also a low chance for 6 to be added instead.
- The
enchant
command has been added with the ability to enchant a user. Enchanted users get higher amounts of candy during the event. Up to two users can enchant a user at a time and enchantments last for 2 hours. Getting cursed wipes any active enchantments, so be careful. - The curse mechanic was added. Atempting to do something bad during the event, such as stealing sweets, has a chance to get you cursed which has various negative effects such as reducing Vigor, which in turn has it's own negative effects.
- The
pumpkin
command and Weight resource for the spooktober event. The resource is in milligrams, the displayed value is in kilograms. This one also has fancy visuals! - Added the FetchHelper class. It has it's own memory cacher to not spam the REST endpoint. Adds the ability to safely
retrieve data about objects that are not in the general cache or obtainable from
get_<object>()
functions. - Added detailed command statistics tracking for use in the upcoming profile rework. Such as your most used commands, arguments, most active guilds and channels, etc.
- The
trickortreat
command that gives you sweets if successfull. Includes chances for bonus candy. - The
sweets
command and Sweets resource for the spooktober event (with fancy image generating!). - The
vigor
command and Vigor resource for the spooktober event. Vigor affects your event cooldowns and chances.
- The
daily
command now gives +1 {Currency} for each consecutive day. - Replaced the
.replace()
directives in FFXIV Timers with.shift()
due to deprecation of the former method causing errors. - Overridden getter functions will use the FetchHelper to try to get invisible data.
- Added a catch-all exception for the dominant color processing handler.
- Fixed the interaction origin showing "Unknown User/Server" even when there is data where the interaction came from.
- Finding items of a Spectral or Ethereal rarity awards you sweets.
- You can now set a custom raffle icon with
>>raffleicon
. This needs to be an emote from the server you're starting the raffle from. - Mentioning a channel in a
raffle
command will now start the raffle in that channel instead of the one where the command is executed in. Sigma will check if the user starting the raffle has the permission to Send Messages in that channel before starting said raffle. - Fix global emote caching issues when using a redis or mixed cache. The cache will now be MemoryCached, forcibly, for this.
- The
spouses
command now sorts the users properly. This was only an issue when someone with database access started fucking with the data (me). - The
spouses
command now displays a more accurate time since you got married to a user. - The
divorce
command got a facelift. You are now presented with a dialogue and options on how to proceed with the divorce. You can ask for a mutual one which will have no cost or force the divorce costing you based on the time you spent married (and display the value). The final option is withdrawing the divorce proposal. Using the divorce command with an ID instead of a mention will not give you an option for a mutual divorce but will still display the dialogue and the cost of forcing the divorce. - Slap now has a
smack
alias. - Punch now has a
hit
alias.
- The
>>tackle
interaction is now a thing. Holding a dev hostage to make it is not ok...
- Sleep now has a
nap
alias. - Drink now has a
cheers
alias.
- The formula used for scaling quiz-type minigames has been altered. Because I got asked this earlier, taking trivia for reference, there is no maximum amount of Kud you can get from the minigame. However, there is an effective one due to the nature of a reverse exponential formula. The effective limits for trivia's Easy/Medium/Hard/Average would be 760/1520/3795/2025 Kud, in that order.
- Added a small
>>dictionary
safeguard for GRAMB type attribute errors. - Added a small
>>jisho
safeguard for the field title value. - The
concurrent.futures._base.CancelledError
exception will now be ignored since it happens when Sigma's forcefully stopped and has no valuable information. - Fixed the
--global
argument for the>>randomemote
command. - Paginated the
>>queue
command. View past the first page with>>queue <page>
. - Simplified some functions in the
>>play
command file. - Changed the audio codec in
music.py
to opus instead of mp3. - Fixed a hardcoded word in the
>>dictionary
command. - The chatter core responder has been given a hard capped response time of two minutes.
- The chatter core responder also got its message content cleaner fixed.
- Fixed an invalid keyword argument in
chatter_core_init.py
. See the arrow changelog. - Added proper spacing between copyright text and imports that have also been formatted.
- Changed a few copyrights from being commented to multi line strings.
- Not really removed... The Girls Frontline module has been disabled for now while a rework is pending.
- The
>>dictionary
command has been repaired and reworked. - The chatter core responder has been given a hard capped response time of two minutes.
- The chatter core responder also got its message content cleaner fixed.
- The
>>givevirginity
command was added... I have no excuse other than "I was really bored".
- Fixed
user_avatar
checkinguser.avatar_url
instead ofuser.avatar
. - Swapped delimiter in
>>ratelimit
from/
to:
to match the description.
- Fixed some command description typos.
- Fixed an unawaited coroutine in
>>randomemote
. - Fixed a caching issue in
>>emote
. - Refactored a check in
>>emote
and>>randomemote
. - Int'd a potential float in
>>wfpricecheck
. - Added a message content check to
>>whisper
for use in DMs. - Fixed command descriptions in the Whisper Settings module.
- The
>>hangman
command. It's hangman. - The
>>whisper
command for sending anonymous messages to a dedicated server channel. - The
>>whisperchannel
command for setting the aforementioned channel. - Made the
get_broad_target(pld: CommandPayload)
function to get a target from a payload in a hierarchy order ofmention > id > name or nick
.
- Disable pre-caching when using a redis-centric cache system.
- Recipe values are now calculated based on the items they're made from and a bit of math. If you need to know, the
formula is
int(sum(ingredient_values) * (3 * (0.075 * sum(ingredient_rarities))) / 100) * 100
- Items now have hardcoded values per rarity (this was always the case, but they were in the item YAMLs).
- Tweaked some comments in
>>purge
to be more accurate. - Cleaned up the changelog a bit. Slightly less spelling and grammatical mistakes.
- Changed the trigger checker function for auto reactors/responders to remove punctuation.
- Added a unique user safeguard to prevent one user from spamming the reaction.
- Added broad targeting to
ban
,hardmute
,hardunmute
,kick
,softban
,voicekick
andissuewarning
. Be careful with broad targeting when using names. - Changed
>>starboardlimit
to show the current limit if one isn't specified. - Changed
>>starboardchannel
to use the current channel if one isn't mentioned. - Fixed an error in
starboard_watcher
resulting in disabling the starboard having no effect. - Updated
>>randomcomicgenerator
to accommodate joining the three images returned by the web page. - Changed
>>wfnightwave
to not have hardcoded XP amounts, which caused errors.
- Removed unnecessary
usage
anddmable
, fields in variousmodule.yml
files. - Removed a duplicate of
clean_word
.
- The new
>>resetongoing
command will reset any "ongoing" locks that are placed on longer minigames to prevent duplicates. If a minigame gets stuck in an "ongoing" state you can clear it with this. - All ongoing lists have been reworked to be resettable.
- Added a parameter to
>>commandstatistics
for viewing a specific command's use count.
- An automatic leaderboard resetting clockwork has been added. It resets the leaderboards at midnight UTC.
- Change
>>servericon
fallback type on no icon URL. - Fix
>>serverinfo
to handle unrecognized/unenumerated regions. - Added a safeguard for
>>queue
when editing lookup status messages. - Added a safeguard for
>>bash
for the event where its cache depletes and it's not possible to refill it. - The Reminder clock no longer uses a DM as a fallback but instead lets another shard take over the task for that reminder.
- Fix missing player creation voice client existence check.
- Add a JSON parsing safeguard for
>>ud
results. - Fix deck generation for the
>>newdeck
command. - Minor changelog heading fixes from the previous version.
- Add a
>>finalffantasyxivtimers
command that shows Final Fantasy XIV timers cause Heide is a little bitch. - Add
>>alacquisition
command that shows how you can get an Azur Lane ship.
- Jisho URL format safeguard and a safeguard for the reading key for when it doesn't exist.
- Wolfram result display type check fixes and safeguards.
- The
>>lyrics
command got a fallback splitter in case the chunks are too big when split by newline. - The YouTube command's like/dislike count has default values of 0 now to avoid a NoneType incompatibility.
- Added safeguards to profession commands and their dialogue generators.
- The music playing functions got a safeguard for voice client connections during playback and connection timeout safeguard when joining a channel.
- The donation link is now hardcoded to Patreon.
- Add Azur Lane stats processing safeguards for type mismatches and content checks.
- Add Azur Lane ship color safeguards and safeguards in case of Repair ships.
- Remove checking the main License file's integrity to preserve docker container sanity and cross-platform byte reading compatibility. Holy fucking shit, fuck Windows.
- Fixed some docstrings in the NSFW Core file.
- Refactored
>>wolframalpha
to use a more direct CSS query.
- Added a core GalleryClient class for some of the NSFW module. This acts as a universal handler for API calls to reduce redundant local functions.
- Fixed a possible encoding error in
integrity_check
. - Fixed typos and inconsistent punctuation in
integrity_check
. - Refactored the
>>convertcurrency
command to have match Sigma's command structure.
- The
>>azurlaneskills
command shows the skill information of the given ship. - The
>>showlicense
command shows the software's license information. - The
>>repository
command shows the project's repository URL. - An integrity check event has been added that checks the integrity of all license comments. Any missmatching of the license text is a violation of the GPLv3 that the project is distributed with and will shut down the software.
- Altered command execution to handle ClientOSError instances.
- The redis cacher will now flush all data on boot.
- Added the ability to specify the max number of cached messages in the main client. No less than 100 can be stored.
- The
>>azurlaneskins
has been added to list all the skins a ship has. - The
>>azurlaneskin
has been added to show the given skin.
- Fix the
>>sniff
command saying "dances" instead of "sniffs". - Fixed the
>>drawcard
command. - Fixed
>>convertcurrency
by adapting it to v7 of the API. - More role binding cache fixes.
- Made the
>>unscramblegame
command use the core cacher. - Made the antispam checker event use the core cacher.
- Made the role binding mechanics use the core cacher.
- Made the
>>drawcard
command use the core cacher. - Fix the collector clockwork breaking due to an invalid icon attribute parent.
- Add more detailed logging to most of the dbinit and boot events since they're a part of startup now.
- Changed the way startup events are started, they are now executed before the gateway connection starts.
- Bumped the Python version of the base image to 3.7 from 3.6, that's overdue.
- Moved static detail dicts to the core AzurLaneShip model and add a no-mobile cookie for their wiki.
- Removed an unused cache dict from the
>>osu
command. - The Path of Exile module has been completely removed. Nobody uses it, don't know why I thought anybody would...
- Added the
colourme
alias to the>>colorme
command. - The
>>colorme
command now takes "surprised" as an argument that will give you a random color. - Fixed the
>>shootfoot
command breaking due to an invalid dict default setting. - Change the osu! command's caching.
- Change the Emote command's emote caching.
- The Unscramble Game no longer caches words, instead just runs a quick check of their validity.
- Yande.re command key getting refactor.
- Interaction core fixed for clients that don't use a cacher.
- Changed the XBooru cache to use the core cacher.
- Changed the PoE Passive Skill Gem command to use the core cacher.
- Changed the Rule34 cache to use the core cacher.
- NSFW caches made non-depletable.
- Various typo fixes.
- Got rid of the "Development" section from the README. It used to have project badges in it, but since GL has a specific section and function for those this section is pointless.
- The
>>alship
command now accepts--retrofit
to show the ship's retrofit stats and also shows an average value of the ship's stats. You can also add--awaken
to see the Lv. 120 stas instead of the base stats. - A few fixes for Azur Lane statistics processing and wiki scraping.
- Gelbooru hopefully fixed, shit's weird...
- The Azur Lane module is born!
- The
>>almimic
command will generate a random markov chain impersonation using all Azur Lane quotes. Or a single ship, though due to being a tiny amount of data, they can be very repetitive. - The
>>alship
command shows basic Azur Lane ship information and stats. More commands coming soon as I've made a complete scraper for the AL wiki within Sigma.
- The
>>stats
command now shows for which shard it is showing stats. - Error reporter tweaks and safeguards.
- Change all calls of the
discord.Guild.icon_url
to be compatible with the newdiscord.Asset
class. - Tweaked a few
discord.User.avatar_url
calls to make sure assets don't break those. - The
dbinit
event will now start only on Shard #0 if the client is sharded. - Replaced the
discord.py
requirement from a hard repository URL to just the pypi name since rewrite is now the master branch and the repo branch is archived and broken. - When booting the client will set a booting status message and clear it when it's done.
- Gelbooru uses the core cacher instead of a local dict variable.
- Interactions now use the core cacher instead of a local dict variable.
- Path of Exile Active Skill Gems now use the core cacher... you get the premise, more of these will come soon.
- Made the
get_channel()
andget_user()
not try to cache their results if the caching method isredis
ormixed
.
- Docstrings, docstrings EVERYWHERE! Every single docstringable thing has been given a docstring.
- Common mostly static classes have been given
__slots__
attributes by Valeth. - The permission logging lines now have a command blacklisting marker separate from the module one.
- Removed parameter type hints.
- The
>>konachan
command excepts a JSON parsing error now due to the CloudFlare issue. - Docker build image fixes by Valeth.
- Renamed
get_
Discord HTTP functions tofetch_
to coincide with a recent library update.
>>marry
now use a bool dialogue rather than a permanent proposal. You're either married or you're not.>>divorce
and>>spouses
have been refactored to reflect the marriage change.bool_dialogue
now returns atimeout
bool that says whether the dialogue was declined or timed out.>>filtersell
,>>sell
and>>adopt
have been changed to use the previously mentionedtimeout
value.
- Switched which API for
>>wfnightwave
back due to the current one having placeholder descriptions.
- Fixed
KeyError
exceptions ininvasion_parser.py
. - Switched which API
wfnews.py
andnews_parser.py
use to one that provides images.
- Suppressions for "Exception too broad" warnings.
- The
WorldState
class was added for handling Waframe API calls. - The
wforbvallis
command for checking the temperature on Orb Vallis in Warframe. - The
wfdroptables
command which provides a link to Warframe's official drop tables. - The
wfdailydeal
command for checking the current Daily Deal in Warframe. - The
wffactionprogress
command for viewing faction progress for Invasions in Warframe. - Appended the completion percentage to Waframe Invasions in
wfinvasions
.
- All Warframe API calls have been changed to use the new
WorldState
class. - Simplified the
remove_revision
function inimage_parser.py
. version_check.py
now usesyaml.safe_load
instead of the depreciatedyaml.load
.- Fixed an incorrectly passed parameter in
generic.py
. - The
wfsortie.py
file was renamed towfsorties.py
, along with its associated command. - Fixed a
KeyError
exception inwfvoidtrader
. - Miscellanious refactors in most Warframe commands.
- Warframe Alert commands and events.
- More AIML properties for the Chatterbot.
- The
>>wfnightwave
command was added. Shows the current Nightwave challenges in Warframe.
- The
wfsyndicates
command. API shutdown by host.
- Interactions will not try to fill missing user and guild data for usage in the footer text.
- The order of the
get_scaled()
arguments has been changed for more logic, it also takes the maximum multiplier cap as an argument. - The profession emote reactions are back. Here's what happened with this. People were pissed about it being made, and when we reverted it, more people were pissed about it being gone. So "fuck you" to the little bitches that can't click an icon.
- Fix markov chain commands sometimes failing due to upstream
KeyError
instances that make no goddamn sense. - Fix the
>>listinactivewarnings
command not working. Was using a non-existent method.
- Chatterbot has been improved with better details, and missing details filled.
- Fixed reporter inconsistencies and errors.
- Sigma can now be told to interact with a user like
>>lick @Sigma @NotALoli
.
- The
get_scaled()
method was added to the Cooldown Controller to get a scaled up cooldown from a base value. The scaled time is slightly randomized and exponential with a passive cleaning method and cap. - The
>>massban
command was added by Shifty. Bans all mentioned users. - The
>>masskick
command was added by Shifty. Kicks all mentioned users. - The
>>choosemany
command was added by Shifty. Choosesn
items from a given, semicolon-separated, list.
- Commands' antispam cooldown now uses the the scaling cooldown to additionally prevent abuse.
- Professions now have special, partially randomized, scaling cooldowns.
- Misc and Utility modules have been moved and re-organized by Shifty.
- Profession rarity check exceptions have been replaced with proper ones by Shifty.
- Import lines cleaned and re-ordered by Shifty.
- The
>>disown
command's response when trying to disown someone who's not in your immediate family has been changed by Shifty to be clearer that you can only disown immediate family members. - The
errors.py
core file was renamed toerror.py
by Shifty. Reason being that the file name should be consistently singular.
- Profession emote interaction validation.
- The
>>roleswithpermission
(the>>rlwperm
for short) command has been made. It lists all roles that have a given permission or list of permissions separated by a;
(semicolon). You can reverse the search so it shows that don't have the permission by adding--negative
to the end of the command.
- Created the
CacherConfiguration
class that handles allCacher
classes. This adds a new core config file atconfig/core/cache.yml
that should contain the cacher parameters. Those are:type
for the type ofCacher
to use,size
for the max number of items in LRU and TTL caches,time
for the time-to-live time limit in the TTL cache, andhost
andport
for the Redis and Mixed cachers.
- The
>>adopt
command now requires emote reaction confirmation that they agree to being adopted. - The
>>familytree
command now uploads a yaml file instead of posting the contents to hastebin due to hastebin's low storage allowance. Cacher
classes now take aCacheConfiguration
value, instead of specific required values.- The default value for the bot token has been removed and replaced with a safeguard check. Sigma now terminates without
trying to contact discord if the token is
None
.
- Created the
ModuleConfig
class that wraps command config data for future configuration expansions. - The initial
run.py
file now checks for any import errors. If detected, it'll try to install the requirements file. - The ChatterBot Core returns! Brought back AI without ChatterBot, now with AIML... it's good enough.
- Codename changed to Ange for 4.35.
- The
SigmaEvent
class now has apath
attribute andresource()
method like the one for commands. - Updated all copyright comments from 2018 to 2019.
- All instances of
plugin
have been renamed tomodule
. Meaning that you need to renameconfig/plugins
toconfig/modules
. - Family tree consistency fixes by Shifty.
- Major family module fixes. Added sibling checks and make recursion issues less likely.
- Fixed the
>>colorme
hex color safeguard check. - Fixed the
>>adopt
response not being assigned to the response variable when targeting bots.
- Renamed
>>packages
to>>pythonpackage
, packages is too broad and has no correlation with what the command does.
- No longer able to
>>adopt
bots. - Clean the
.name
attribute ofAdoptableHuman
because fuck special characters. - Have the
.name
attribute ofAdoptableHuman
update when they're interacted with.
- The family tree functions have been added. You can
>>adopt
people, if you don't like them you can>>disown
them. If you want to see your entire family tree from start to end use>>familytree
and it will generate a nice little link with your entire tree in it. A thing to note that is that this mimics an actual biological family tree, meaning that you can't have more than 2 parents, cause biology.
- Renamed all instances of the method
dictify()
toto_dict()
. It's more uniform and logical.
- The
>>sniff
interaction has been added. I have no official reason behind this besides liking the idea of lewd sniffs. Just being honest...
- The
>>visualnoveldatabase
(I know it's long, use>>vndb
or>>vn
instead) command was revived. Now with 100% less locks and 100% more async. It looks up visual novels, obviously.
- Fixed the
>>spelledlike
command. That issue was there for a long time but nobody really uses this command... - The
>>shadowpollvote
command will now try to delete the vote command message.
- Hard mute ongoing message deletion safeguard. By Shifty.
- Music playing notification edit safeguard. By Shifty.
- Replace aiohttp exceptions to reduce imports. By Shifty.
- Disabled
>>yomomma
while a replacement endpoint is found. By Shifty.
- Selling your entire inventory or selling items with a filter will trigger a confirmation dialogue for the user to confirm their sale.
- The bool dialogue generator now takes a
tracked: bool
argument that records how long the user took to respond.
- The interaction addition is now a whitelist mechanic. Instead of being able to remove submitted interactions with
an
❌
emote reaction to the log message, you now approve it instead with a✅
. Unless approved, the interaction will not be used. Sigma will then add a🆗
reaction of her own if successfully approved.
- Server renamed to Support in the
>>help
command and make the command link lead to the website once again. - Fix the invite URL in the
CONTRIBUTING.md
document and remove the nonexistent setup link. - Suggestion approval and declining commands return an
ok
response if the user was not found or if the notification was undelivered, specifying the lookup or delivery failure. - Shortened the
status_clockwork(ev: SigmaEvent)
lines for caching the status files. - Placed
.get()
methods inafk_mention_check.py
to combat possible (but unlikely)KeyError
instances. - Refactored
module.yml
files automatically for visual alignment and clarity. - The
>>youtube
command was repaired by Shifty.
- Remove logger creation from the
ExecutionClockwork
class as it was unused. - The logger files contain shard numbers in them in the format of
sigma.{shard}.{date}.log
. - The way the
>>play
command executes the>>summon
,>>queue
and>>donate
commands are executed now use their raw methods instead of the.execute(pld: CommandPayload)
method of theSigmaCommand
class. - Generic responses implementation by Shifty, second pass.
- Generic responses implementation by Shifty, first pass.
- Fixed extension blocked incompatibility with the Payload system by Shifty.
- The
>>crates
command for searching crates.io Cargo/Rust packages.
- Fix CHANGELOG.md dates and alter styling. Poor me was still stuck in 2018.
- Generic core utility for making async HTTP requests created with the
aioget(url: str, as_json: bool)
coroutine. - Add the
error(content: str)
generic response method.
- Blockers/filters now check for the
administrator
permission inguild_permissions
instead ofpermissions_in(channel)
. - Change invite blocking functions default value for the
invite_found
variable from abool
to aNone
. - Remove the
>>prefix
command minimum length limit of 2 characters. - Fix the
>>donate
command's missing (incorrect) argument.
- Disable caching of blacklist items. Those are user, server, module and command blacklist entries.