aboutsummaryrefslogtreecommitdiffstats
path: root/tests/helpers.py (unfollow)
Commit message (Collapse)AuthorLines
2019-12-31Make sure description is truncated to max 1000 charsGravatar Numerlor-2/+8
2019-12-30Update filetype whitelist to include audio formatsGravatar Ava-0/+3
Discord has a built-in player for all of these and they are really just stripped down videos, which are allowed.
2019-12-26Use a static discord shield on the readme.Gravatar scragly-1/+1
2019-12-22Add ducky attributes to bot.constantsGravatar Sebastiaan Zeeff-0/+6
I have added attributes to the Emojis class in `bot.constants` for the newly added ducky emoji constants.
2019-12-22Add ducky constants to make duckpond workGravatar Sebastiaan Zeeff-1/+7
I have added the IDs of the new duckies we have to the constants
2019-12-22Allow PSD's and more on antimalware whitelistGravatar Leon Sandøy-0/+5
Also includes the following related formats: - .svg - .ai (Adobe Illustrator) - .aep (Adobe After Effects) - .xcf (GIMP
2019-12-17Use on_user_update to properly sync users with dbGravatar Sebastiaan Zeeff-29/+26
It's important to us that we keep the information we have about users in the database in sync with the actual user information the bot can observe in our guild. To do this, we relied on the `on_member_update` event listener to synchronize a user's information when an update of the information was detected. However, unfortunately, this does not work for user account information (i.e., the username, avatar, and discriminator of the user). The solution is to use the `on_user_update` event listener to watch for updates in the user settings and to use the `on_member_update` event listener to watch for updates in guild-related information for that user. (We currently only sync the roles the user has.) See: - https://discordpy.readthedocs.io/en/stable/api.html#discord.on_member_update - https://discordpy.readthedocs.io/en/stable/api.html#discord.on_user_update Note: The docs for `discord.py` make it *seem* like the `on_member_update` event does not fire for updates of theusername, discriminator, and avatar attributes. However, experimentation shows that this event *does* fire; it's just that the member objects provided as `before` and `after` to the listener will already have been updated in cache by the `on_user_update` event that fires *before* it. This means that if the only changes made were to the username, avatar, and discriminator, the `on_member_update` event does fire, but with two *equal* Member objects. This makes it appear as if you may be able to use `on_member_update`, since it fires, but it does not actually contain anything useful.
2019-12-12Verification: check channel before checking for bot messagesGravatar MarkKoz-3/+3
2019-12-13Fixed a typo ( due to poor copy pasta and eyeballing skills )Gravatar Shirayuki Nekomata-1/+1
2019-12-13Added tests for `until_expiration`Gravatar Shirayuki Nekomata-0/+45
Similar to `format_infraction_with_duration` ( if not outright copying it ), added 3 tests for `until_expiration`: - None `expiry`. - Custom `max_units`. - Normal use cases.
2019-12-13Adding an optional argument for `until_expiration`, update typehints for ↵Gravatar Shirayuki Nekomata-3/+8
`format_infraction_with_duration` - `until_expiration` was being a pain to unittests without a `now` ( default to `datetime.utcnow()` ). Adding an optional argument for this will not only make writing tests easier, but also allow more control over the helper function should we need to calculate the remaining time between two dates in the past. - Changed typehint for `date_from` in `format_infraction_with_duration` to `Optional[datetime.datetime]` to better reflect what it is.
2019-12-13Revert "Revert "Use OAuth to be Reddit API compliant""Gravatar Joseph-11/+88
2019-12-13Revert "Use OAuth to be Reddit API compliant"Gravatar Joseph-88/+11
2019-12-11Clean: reformat argumentsGravatar MarkKoz-8/+33
2019-12-11Clean: allow amount argument to be skipped Gravatar Mark-4/+4
This make the channel specifiable without the amount. Co-Authored-By: scragly <[email protected]>
2019-12-11Converters: rename string to allowed_stringsGravatar MarkKoz-5/+5
2019-12-11ModManagement: add more aliases for "special" params of infraction editGravatar MarkKoz-8/+8
2019-12-11Moderation: show emoji for DM failure instead of mentioning actor (#534)Gravatar MarkKoz-3/+6
2019-12-11ModManagement: display ID of edited infraction in confirmation messageGravatar MarkKoz-1/+2
2019-12-11ModManagement: allow "recent" as ID to edit infraction (#624)Gravatar MarkKoz-2/+21
It will attempt to find the most recent infraction authored by the invoker of the edit command.
2019-12-11Add a generic converter for only allowing certain string valuesGravatar MarkKoz-13/+23
2019-12-11Verification: delete bots' messages (#689)Gravatar MarkKoz-1/+6
Messages are deleted after a delay of 10 seconds. This helps keep the channel clean. The periodic ping is an exception; it will remain.
2019-12-11Verification: allow mods+ to use commands in checkpoint (#688)Gravatar MarkKoz-2/+3
2019-12-11Clean: support specifying a channel different than the context'sGravatar MarkKoz-13/+18
2019-12-11Clean: un-hide from help and add purge aliasGravatar MarkKoz-1/+1
2019-12-11Reddit: raise ClientError when the token can't be retrievedGravatar MarkKoz-4/+3
Raising an exception allows the error handler to display a message to the user if the failure happened from a command invocation.
2019-12-11Reddit: log retries when getting the access tokenGravatar MarkKoz-1/+9
2019-12-11Reddit: create a dict constant for the User-Agent headerGravatar MarkKoz-27/+12
2019-12-11Reddit: revise docstringsGravatar MarkKoz-9/+17
2019-12-11Reddit: define AccessToken type at the module levelGravatar MarkKoz-1/+2
2019-12-11Reddit: use expires_in from the response to calculate token expirationGravatar MarkKoz-2/+3
2019-12-11Reddit: use qualified_name attribute when removing the cogGravatar MarkKoz-1/+1
2019-12-11Reddit: move BasicAuth instantiation to __init__Gravatar MarkKoz-4/+3
The object is basically just a namedtuple so there's no need to re-create it every time a token is obtained. * Remove log message which shows credentials. * Initialise headers attribute to None in __init__.
2019-12-11Reddit: move token renewal inside fetch_postsGravatar MarkKoz-17/+4
This removes the duplicate code for renewing the token. Since fetch_posts is the only place where the token gets used, it can just be refreshed there directly.
2019-12-11ErrorHandler: fix #650 tag fallback not respecting checksGravatar MarkKoz-0/+10
2019-12-09Infractions: kick user from voice after muting (#644)Gravatar MarkKoz-2/+7
2019-12-10Whitelist Discord Testers invite linkGravatar Matteo Bertucci-0/+1
2019-12-09Moderation: catch HTTPException when applying an infractionGravatar MarkKoz-3/+7
Only a warning is logged if it's a Forbidden error. Otherwise, the whole exception is logged.
2019-12-09Moderation: show HTTP status code in the log for deactivation failuresGravatar MarkKoz-1/+1
2019-12-08Use the AsyncResolver for APIClient and discord.py sessions tooGravatar MarkKoz-11/+11
Active thread counts are observed to be lower with it in use.
2019-12-09Ensure hidden_channels and bypass_roles use a list when not passed.Gravatar Manuel Ignacio Pérez Alcolea-0/+3
The in_channel decorator raised 'NoneType' is not iterable when it wasn't passed, due to the default value being None but not checked against before iterating over it. This edit ensures the arguments are set to an empty list in cases where they have a value of None instead.
2019-12-08Fix test failures for setup log messagesGravatar MarkKoz-24/+7
2019-12-08Properly create and close aiohttp sessionsGravatar MarkKoz-10/+65
aiohttp throws a warning when a session is created outside of a running async event loop. In aiohttp 4.0 this actually changes to an error instead of merely a warning. Since discord.py manages the event loop with client.run(), some of the "internal" coroutines of the client were overwritten in the bot subclass to be able to hook into when the bot starts and stops. Sessions of both the bot and the API client can now potentially be None if accessed before the sessions have been created. However, if called, the API client's methods will wait for a session to be ready. It will attempt to create a session as soon as the event loop starts (i.e. the bot is running).
2019-12-08Fix name conflict with the Bot cogGravatar MarkKoz-3/+3
2019-12-08Override add_cog to log loading of cogsGravatar MarkKoz-80/+34
2019-12-07Change all Bot imports to use the subclassGravatar MarkKoz-52/+92
2019-12-07Subclass BotGravatar MarkKoz-24/+32
2019-12-05Keeps access token alive, only revokes it on extension unload.Gravatar Jens-20/+32
Hard-coded version number to 1.0.0.
2019-12-05Requested changeGravatar kraktus-1/+2
Include the check about whether or not there is a token in the posted message in `parse_codeblock` boolean.
2019-12-05Added optional channel parameter to !echo:Gravatar Daniel Brown-4/+7
- Added the option to specify a channel to have Python repeat what you said to it, as well as keeping the old functionality of having it repeat what you said in the current channel if no channel argument is given. Signed-off-by: Daniel Brown <[email protected]>