aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
...
| * | | | | | | | | | | HelpChannels: pass coroutine func instead to `_change_cooldown_role`Gravatar MarkKoz2020-04-20-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will allow `_change_cooldown_role` to handle the role argument rather than putting that burden on the callers.
| * | | | | | | | | | | HelpChannels: tidy up log messagesGravatar MarkKoz2020-04-20-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Remove obsolete log message * Shorten a log message which was the only line in the entire module over 100 characters
| * | | | | | | | | | | HelpChannels: handle errors when changing cooldown roleGravatar MarkKoz2020-04-17-12/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A user may leave the guild before their role can be changed. Sometimes, there could also be role hierarchy issues or other network issues. It's not productive to halt everything and just dump these as exceptions to the loggers. The error handler provides a more graceful approach to these exceptions. * Add a wrapper function around `add_roles` & `remove_roles` which catches exceptions
| * | | | | | | | | | | HelpChannels: fix role not resetting after dormant commandGravatar MarkKoz2020-04-17-13/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resetting permissions relied on getting the member from the cache, but the member was already removed from the cache prior to resetting the role. Now the member is passed directly rather than relying on the cache.
| * | | | | | | | | | | HelpChannels: mention dormant cmd in available message embedGravatar MarkKoz2020-04-17-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Users should know they can close their own channels.
| * | | | | | | | | | | HelpChannels: add info about cooldown role & dormant cmd to docstringGravatar MarkKoz2020-04-17-0/+3
| | | | | | | | | | | |
| * | | | | | | | | | | HelpChannels: add/remove a cooldown role rather than using overwritesGravatar MarkKoz2020-04-17-13/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Overwrites had issues syncing with channels in the category. * Remove update_category_permissions; obsolete * Add constant for the cooldown role wrapped in a discord.Object
| * | | | | | | | | | | HelpChannels: clear roles when resetting permissionsGravatar MarkKoz2020-04-17-9/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Claimants will have a special role that needs to be removed rather than using member overwrites for the category.
| * | | | | | | | | | | HelpChannels: add helper function to check for claimant roleGravatar MarkKoz2020-04-17-0/+5
| | | | | | | | | | | |
| * | | | | | | | | | | HelpChannels: remove ensure_permissions_synchronizationGravatar MarkKoz2020-04-17-29/+1
| | | | | | | | | | | |
| * | | | | | | | | | | Constants: add help channel cooldown roleGravatar MarkKoz2020-04-17-0/+2
| | | | | | | | | | | |
| | * | | | | | | | | | Add DMChannel tests for in_whitelist decoratorGravatar Sebastiaan Zeeff2020-04-27-31/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `in_whitelist` decorator should not fail when a decorated command was called in a DMChannel; it should simply conclude that the user is not allowed to use the command. I've added a test case that uses a DMChannel context with User, not Member, objects. In addition, I've opted to display a test case description in the `subTest`: Simply printing the actual arguments and context is messy and does not actually show you the information you'd like. This description is enough to figure out which test is failing and what the gist of the test is.
| | * | | | | | | | | | Add mock for discord.DMChannelsGravatar Sebastiaan Zeeff2020-04-27-0/+21
| | | | | | | | | | | |
| | * | | | | | | | | | Exclude never-run lines from coverageGravatar Sebastiaan Zeeff2020-04-27-2/+2
| | | | | | | | | | | |
| | * | | | | | | | | | Simplify `in_whitelisted_context` decorator APIGravatar Sebastiaan Zeeff2020-04-23-92/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The API of the `in_whitelisted_context` decorator was a bit clunky: - The long parameter names frequently required multiline decorators - Despite `#bot-commands` being the defacto default, it needed to be passed - The name of the function, `in_whitelisted_context` is fairly long in itself To shorten the call length of the decorator, the parameter names were shortened by dropping the `whitelisted_` prefix. This means that the parameter names are now just `channels`, `categories`, and `roles`. This already means that all current usages of the decorator are reduced to one line. In addition, `#bot-commands` has now been made the default redirect channel for the decorator. This means that if no `redirect` was passed, users will be redirected to `bot-commands` to use the command. If needed, `None` (or any falsey value) can be passed to disable redirection. Passing another channel id will trigger that channel to be used as the redirection target instead of bot-commands. Finally, the name of the decorator was shortened to `in_whitelist`, which already communicates what it is supposed to do.
| | * | | | | | | | | | Allow `!eval` in help channel categoriesGravatar Sebastiaan Zeeff2020-04-23-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As help conversations now take place in their own, dedicated channels, there's no longer a pressing need to restrict the `!eval` command in help channels for regular members. As the command can be a valuable tool in explaining and teaching Python, we've therefore chosen to allow it in channels in `Help: Available` and `Help: Occupied` catagories.
| | * | | | | | | | | | Add tests for `in_whitelisted_context` decoratorGravatar Sebastiaan Zeeff2020-04-23-0/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have added tests for the new `in_whitelisted_context` decorator. They work by calling the decorator with different kwargs to generate a specific predicate callable. That callable is then called to assess if it comes to the right conclusion.
| | * | | | | | | | | | Remove vestigial kwargs from MockTextChannel.__init__Gravatar Sebastiaan Zeeff2020-04-23-1/+1
| | | | | | | | | | | |
| | * | | | | | | | | | Replace `in_channel` decorator by `in_whitelisted_context`Gravatar Sebastiaan Zeeff2020-04-23-47/+94
| |/ / / / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `in_channel` decorator that served as a factory for `in_channel` checks was replaced by the broaded `in_whitelisted_context` decorator. This means that we can now whitelist commands using channel IDs, category IDs, and/or role IDs. The whitelists will be applied in an "OR" fashion, meaning that as soon as some part of the context happens to be whitelisted, the `predicate` check the decorator produces will return `True`. To reflect that this is now a broader decorator that checks for a whitelisted *context* (as opposed to just whitelisted channels), the exception the predicate raises has been changed to `InWhitelistedContextCheckFailure` to reflect the broader scope of the decorator. I've updated all the commands that used the previous version, `in_channel`, to use the replacement.
* | | | | | | | | | | Merge pull request #904 from Akarys42/free-tagGravatar Shirayuki Nekomata2020-04-23-0/+5
|\ \ \ \ \ \ \ \ \ \ \ | |_|/ / / / / / / / / |/| | | | | | | | | | Free tag
| * | | | | | | | | | Merge branch 'master' into free-tagGravatar Shirayuki Nekomata2020-04-23-12/+57
| |\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / |/| | | | | | | | | |
* | | | | | | | | | | Merge pull request #900 from python-discord/fix-category-cache-issueGravatar Sebastiaan Zeeff2020-04-21-3/+2
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Fix category cache issue
| * | | | | | | | | | | Fix category cache issueGravatar Joseph Banks2020-04-21-3/+2
|/ / / / / / / / / / /
* | | | | | | | | | | Merge pull request #896 from python-discord/answered-session-statsGravatar Mark2020-04-20-3/+42
|\ \ \ \ \ \ \ \ \ \ \ | |_|_|/ / / / / / / / |/| | | | | | | | | | Answered help session statistics
| * | | | | | | | | | HelpChannels: add logging to answered checkGravatar MarkKoz2020-04-20-3/+4
| | | | | | | | | | |
| * | | | | | | | | | Extra documentation + split out to separate functionGravatar Joseph Banks2020-04-20-8/+26
| | | | | | | | | | |
| * | | | | | | | | | Add different emoji for different channel statuses (in use answered/unanswered)Gravatar Joseph Banks2020-04-20-2/+7
| | | | | | | | | | |
| * | | | | | | | | | Incorrect comparison, we need to check if we are in help_in_use, not out of itGravatar Joseph Banks2020-04-20-1/+1
| | | | | | | | | | |
| * | | | | | | | | | Add statistics on whether a help session was closed with no input from ↵Gravatar Joseph Banks2020-04-20-0/+15
|/ / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | anyone but the claimant
* | | | | | | | | | Merge pull request #875 from python-discord/bug/info/869/tag-encodingGravatar Mark2020-04-19-1/+1
|\ \ \ \ \ \ \ \ \ \ | |_|/ / / / / / / / |/| | | | | | | | | Explicitly use UTF-8 to read tag files
| * | | | | | | | | Merge branch 'master' into bug/info/869/tag-encodingGravatar Mark2020-04-19-52/+354
| |\ \ \ \ \ \ \ \ \ | |/ / / / / / / / / |/| | | | | | | | |
* | | | | | | | | | Merge pull request #877 from ↵Gravatar Shirayuki Nekomata2020-04-18-2/+8
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | python-discord/bug/frontend/870/help-channel-dm-category HelpChannels: fix AttributeError getting a category for a DMChannel
| * \ \ \ \ \ \ \ \ \ Merge branch 'master' into bug/frontend/870/help-channel-dm-categoryGravatar Shirayuki Nekomata2020-04-18-50/+346
| |\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / |/| | | | | | | | | |
* | | | | | | | | | | Merge pull request #874 from ks129/syncer-timeout-fixGravatar kwzrd2020-04-17-2/+4
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Fix wrong exception type in syncing
| * \ \ \ \ \ \ \ \ \ \ Merge branch 'master' into syncer-timeout-fixGravatar kwzrd2020-04-17-181/+1253
| |\ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / |/| | | | | | | | | | |
* | | | | | | | | | | | Remove `.md` from anti-malware whitelistGravatar Sebastiaan Zeeff2020-04-16-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We want our members to use the paste site to share text-based files instead of them sharing the files as attachments on Discord. As `.md`, a file extensions used for plain-text files with markdown formatting, is such a text file, I've removed it from the anti-malware whitelist.
| * | | | | | | | | | | (Syncer Tests): Replaced wrong side effectGravatar ks1292020-04-09-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replaced `TimeoutError` with `asyncio.TimeoutError`.
| * | | | | | | | | | | (Syncers): Fixed wrong except statementGravatar ks1292020-04-09-1/+2
| | |_|_|_|_|_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | Replaced `TimeoutError` with `asyncio.TimeoutError`.
| | * | | | | | | | | HelpChannels: ensure `is_in_category` returns a boolGravatar Mark2020-04-17-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Co-Authored-By: kwzrd <[email protected]>
| | * | | | | | | | | HelpChannels: create helper method for checking channel's categoryGravatar MarkKoz2020-04-11-4/+8
| | | | | | | | | | |
| | * | | | | | | | | HelpChannels: create a helper method for checking a channGravatar MarkKoz2020-04-11-2/+4
| | | | | | | | | | |
| | | * | | | | | | | Tags: explicitly use UTF-8 to read filesGravatar MarkKoz2020-04-10-1/+1
| | |/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not all operating systems use UTF-8 as the default encoding. For systems that don't, reading tag files with Unicode would cause an unhandled exception.
| | | * | | | | | | Free tag: fix typo in headerGravatar kwzrd2020-04-23-1/+1
| | | | | | | | | |
| | | * | | | | | | Simplify free tagGravatar Matteo Bertucci2020-04-23-3/+2
| | | | | | | | | |
| | | * | | | | | | Use IDs instead of hard-coding category names in the free tagGravatar Matteo Bertucci2020-04-16-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Co-Authored-By: Shirayuki Nekomata <[email protected]>
| | | * | | | | | | Add a title at the top of the free tagGravatar Matteo Bertucci2020-04-16-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Co-Authored-By: Shirayuki Nekomata <[email protected]>
| | | * | | | | | | Create temporary free tagGravatar Matteo Bertucci2020-04-16-0/+5
| |_|/ / / / / / / |/| | | | | | | |
* | | | | | | | | Merge pull request #881 from ↵Gravatar Shirayuki Nekomata2020-04-14-4/+0
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | python-discord/help-channels-keep-dormant-invocation Reverse deletion of `!dormant` invocation messages
| * | | | | | | | | Revert deletion of !dormant invocation messagesGravatar Sebastiaan Zeeff2020-04-14-4/+0
|/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR #868 introduced the automatic deletion of the message that issued the `!dormant` command. The idea behind this was that moving the channel to the dormant category makes it obvious that a channel has gone dormant and the message would only serve as visual clutter. However, removing the command invocation also means that it's less obvious why a channel was moved to the dormant category. As the message gets deleted almost immediately, you have to be actively watching the channel to know that the command was issued and who issued it. This has already caused some confusion where helping members where left wondering why a channel suddenly went dormant while they felt that the conversation was still ongoing. To improve the user experience, this commit removes the deletions of the command invocation messages.
* | | | | | | | | [stat] Tag statistic was using the user input as the series name, not the ↵Gravatar Joseph Banks2020-04-13-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | resolved tag name