aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
...
| | | | | | | | | | | | | | | | | * Lock: rename variable to avoid shadowingGravatar MarkKoz2020-10-03-3/+3
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Reminders: fix conflict with the _can_modify checkGravatar MarkKoz2020-09-09-1319/+1347
| | | | | | | | | | | | | | | | | |\ | | |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|/ | |/| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Fix attribute docstring for LockedResourceErrorGravatar MarkKoz2020-09-09-1/+1
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Move lock decorators to utils/lock.pyGravatar MarkKoz2020-09-09-86/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `LockGuard` was lonely and the decorators were cluttering up decorators.py.
| | | | | | | | | | | | | | | | | * Decorators: rename mutually_exclusive decoratorsGravatar MarkKoz2020-09-09-14/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A mutex is the same thing as a lock. The former is a relatively esoteric contraction, so the latter is preferred.
| | | | | | | | | | | | | | | | | * Decorators: remove locked() decoratorGravatar MarkKoz2020-09-09-35/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was not being used anywhere.
| | | | | | | | | | | | | | | | | * Decorators: replace asyncio.Lock with a custom objectGravatar MarkKoz2020-08-22-4/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Concerns were raised over possible race conditions due `asyncio.Lock` internally awaiting coroutines. Does a mere `await` suspend the current coroutine, or does it have to actually await something asynchronous, like a future? Avoid answering that question by doing away with the awaits, which aren't necessary but are there as a consequence of using `asyncio.Lock`. Instead, add a custom `LockGuard` object to replace the previous locks.
| | | | | | | | | | | | | | | | | * Explicitly use kwarg with respect_role_hierarchyGravatar MarkKoz2020-08-01-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clarify the significance of the argument being passed.
| | | | | | | | | | | | | | | | | * Decorators: fix type annotations for checksGravatar MarkKoz2020-08-01-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The annotation was previously changed on the basis of an incorrect return annotation PyCharm inferred for `check()`.
| | | | | | | | | | | | | | | | | * Reminders: use singular form for mutually exclusive namespaceGravatar MarkKoz2020-07-31-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The exception it raises reads better if the singular form of the word is used.
| | | | | | | | | | | | | | | | | * Reminders: show error to users if reminder is in useGravatar MarkKoz2020-07-31-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Silent failure is confusing to users. Showing an error message clears up why nothing happened with their command.
| | | | | | | | | | | | | | | | | * Send users an error message if command raises LockedResourceErrorGravatar MarkKoz2020-07-31-0/+3
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Decorators: optionally raise an exception if resource is lockedGravatar MarkKoz2020-07-31-4/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The exception will facilitate user feedback for commands which use the decorator.
| | | | | | | | | | | | | | | | | * Decorators: add some trace loggingGravatar MarkKoz2020-07-31-0/+3
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Decorators: wrap mutually_exclusive to use get_arg_valueGravatar MarkKoz2020-07-31-7/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of taking a callable, this wrapper just takes a name or position to get the resource ID.
| | | | | | | | | | | | | | | | | * Decorators: remove redundant word in docstringGravatar MarkKoz2020-07-31-1/+1
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Decorators: use type aliases from function moduleGravatar MarkKoz2020-07-31-4/+2
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Decorators: remove default value for respect_role_hierarchyGravatar MarkKoz2020-07-31-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Explicit is better than implicit, and this default value wasn't much of a convenience.
| | | | | | | | | | | | | | | | | * Decorators: use new func utils in respect_role_hierarchyGravatar MarkKoz2020-07-31-30/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace the `_get_arg_value` call with `function.get_arg_value` cause the latter makes use of bound arguments, which are more accurate.
| | | | | | | | | | | | | | | | | * Add a function to get bound argsGravatar MarkKoz2020-07-31-4/+17
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Add a function to wrap a decorator to use get_arg_valueGravatar MarkKoz2020-07-31-1/+28
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Reminders: make operations mutually exclusiveGravatar MarkKoz2020-07-31-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes race conditions between editing, deleting, and sending a reminder. If one operation is already happening, the others will be aborted.
| | | | | | | | | | | | | | | | | * Add util function to get value from argGravatar MarkKoz2020-07-31-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a more advanced version meant to eventually replace the `_get_arg_values` in decorators.py.
| | | | | | | | | | | | | | | | | * Decorators: pass bound arguments to callableGravatar MarkKoz2020-07-31-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bound arguments are more convenient to work with than the raw args and kwargs.
| | | | | | | | | | | | | | | | | * Decorators: clarify use of mutually_exclusive with commandsGravatar MarkKoz2020-07-31-0/+2
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Decorators: add logging for mutually_exclusiveGravatar MarkKoz2020-07-31-4/+12
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Decorators: fix lock creationGravatar MarkKoz2020-07-31-1/+1
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Decorators: support awaitables for resource IDGravatar MarkKoz2020-07-31-4/+11
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Decorators: drop arg pos/name support for mutually_exclusiveGravatar MarkKoz2020-07-31-10/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Supporting ID retrieval by arg name or position made for a confusing interface. I also doubt it would have been used much. A callable can achieve the same thing, albeit with a little more code. Now the decorator instead supports passing an ID directly or a callable.
| | | | | | | | | | | | | | | | | * Decorators: add mutually exclusive decoratorGravatar MarkKoz2020-07-31-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will be used to prevent race conditions on a resource by stopping all other access to the resource once its been acquired.
| | | | | | | | | | | | | | | | | * Decorators: create helper function to get arg valueGravatar MarkKoz2020-07-31-10/+24
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Decorators: clean up importsGravatar MarkKoz2020-07-31-28/+26
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Decorators: more accurate return type for checksGravatar MarkKoz2020-07-31-3/+3
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | * Reminders: fix reminder_id type annotationGravatar MarkKoz2020-07-31-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's fine to accept an int since it'll get converted to a string anyway.
| | | | | | | | | | | | | | | | | * Reminders: remove _delete_reminder functionGravatar MarkKoz2020-07-31-21/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only one call was benefiting from that function also cancelling the task. Therefore, the function was redundant and has been replaced with a direct request to delete. This change has the consequence of also fixing reminder tasks cancelling themselves. That issue was potentially suppressing errors (such as the duplicate DELETE request which was fixed earlier). Under normal circumstances, the scheduler will automatically removed finished tasks so tasks won't need to cancel/remove themselves.
| | | | | | | | | | | | | | | | | * Reminders: remove duplicate deletion in scheduled taskGravatar MarkKoz2020-07-31-9/+1
| | | |_|_|_|_|_|_|_|_|_|_|_|_|_|/ | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `send_reminder` already deletes the reminder so it's redundant to delete it in the scheduled task too.
* | | | | | | | | | | | | | | | | Code block: support the "pycon" language specifierGravatar MarkKoz2020-10-05-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's used for code copied from the Python REPL.
* | | | | | | | | | | | | | | | | Fix conflict for webhook token check in code block detectionGravatar MarkKoz2020-09-09-604/+203
|\| | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | Merge pull request #1144 from Numerlor/text-link-fixGravatar Shirayuki Nekomata2020-09-05-2/+2
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move bolding markdown outside of text link in help channel messages.
| | * \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Merge branch 'master' into text-link-fixGravatar Shirayuki Nekomata2020-09-05-8/+17
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | |/ / / / / / / / / / / / / / / / | |/| | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | Disable everyone_ping filter in AntiSpam cogGravatar Sebastiaan Zeeff2020-09-05-4/+8
| | |_|_|_|_|_|_|_|_|_|_|/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As there are a few bugs in the implementation, I've temporarily disabled the at-everyone ping filter in the AntiSpam cog. We can disable it after we've fixed the bugs. Signed-off-by: Sebastiaan Zeeff <[email protected]>
| * | | | | | | | | | | | | | | | Disable burst_shared filter of the AntiSpam cogGravatar Sebastiaan Zeeff2020-09-04-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Our AntiSpam cog suffers from a race condition that causes it to try and infract the same user multiple times. As that happens frequently with the burst_shared filter, it means that our bot joins in and starts spamming the channel with error messages. Another issue is that burst_shared may cause our bot to send a lot of DMs to a lot of different members. This caused our bot to get a DM ban from Discord after a recent `everyone` ping incident. I've decided to disable the `burst_shared` filter by commenting out the relevant lines but leave the code in place otherwise. This means we still have the implementation handy in case we want to re-enable it on short notice. Signed-off-by: Sebastiaan Zeeff <[email protected]>
| | * | | | | | | | | | | | | | | Move bolding markdown outside of text link.Gravatar Numerlor2020-09-04-2/+2
| |/ / / / / / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On some devices the markdown gets rendered improperly, leaving the asterisks in the message without bolding.
| * | | | | | | | | | | | | | | Merge pull request #1132 from ↵Gravatar Mark2020-09-03-1/+3
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | python-discord/bug/filters/1130/ignore-codeblock-emoji AntiSpam: ignore custom emojis in code blocks
| | * | | | | | | | | | | | | | | AntiSpam: ignore custom emojis in code blocksGravatar MarkKoz2020-08-27-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In code blocks, custom emojis render as text rather than as images. Therefore, they probably aren't being spammed and should be ignored. Fix #1130
| * | | | | | | | | | | | | | | | Merge pull request #1135 from ↵Gravatar Daniel Brown2020-09-03-1/+48
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MrAwesomeRocks/feat/filter/1131/everyone-ping-responder Auto-respond to everyone pings.
| | * \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Merge branch 'master' into feat/filter/1131/everyone-ping-responderGravatar Daniel Brown2020-09-03-513/+48
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | |/ / / / / / / / / / / / / / / / | |/| | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | Merge pull request #1134 from python-discord/remove-wolframGravatar Leon Sandøy2020-09-02-475/+0
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Completely gutted the wolfram command.
| | * \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Merge branch 'master' into remove-wolframGravatar Leon Sandøy2020-09-02-34/+38
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | |/ / / / / / / / / / / / / / / / / | |/| | | | | | | | | | | | | | | | |
| * | | | | | | | | | | | | | | | | | Merge pull request #1141 from wookie184/make-antimalware-ignore-bot-and-webhookGravatar Dennis Pham2020-09-01-0/+26
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added checks to ignore webhook and bot messages for antimalware