aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
* Scheduler: make _scheduled_tasks privateGravatar MarkKoz2020-02-15-6/+6
| | | | | | | | | Main concern is someone trying to cancel a task directly. The workaround for the race condition relies on the task only being cancelled via Scheduler.cancel_task(), particularly because it removes the task from the dictionary. The done callback will not remove from the dictionary if it sees the task has already been cancelled. So it's a bad idea to cancel tasks directly...
* Moderation: avoid prematurely cancelling deactivation taskGravatar MarkKoz2020-02-15-1/+3
| | | | | Because deactivate_infraction() explicitly cancels the scheduled task, it now runs in a separate task to avoid prematurely cancelling itself.
* Scheduler: cancel the task in the callbackGravatar MarkKoz2020-02-15-12/+30
| | | | | | | | This design makes more sense and is more convenient than requiring tasks to be responsible for cancelling themselves. * Rename _handle_task_exception to _task_done_callback * Add trace logging
* Scheduler: raise task exceptions besides CancelledErrorGravatar MarkKoz2020-02-15-4/+7
| | | | | | | Explicitly retrieves the task's exception, which will raise the exception if one exists. * Rename _suppress_cancelled_error to _handle_task_exception
* Scheduler: remove loop parameter from schedule_taskGravatar MarkKoz2020-02-15-16/+9
| | | | | | | asyncio.create_task() exists and will already use the running loop in the current thread. Because there is no intention of using a different loop in a different thread anywhere in the program for the foreseeable future, the loop parameter is redundant.
* Scheduler: correct schedule_task's docstringGravatar MarkKoz2020-02-15-1/+1
|
* Scheduler: remove create_task functionGravatar MarkKoz2020-02-15-15/+7
| | | | | | | | It's redundant because the done callback only takes a single line to add and can be added in schedule_task(). * Use Task as the type hint rather than Future for _suppress_cancelled_error()
* Scheduler: fix #754 - only suppress CancelledErrorGravatar MarkKoz2020-02-15-6/+7
|
* Merge pull request #752 from python-discord/infr-edit-permanent-fixGravatar Mark2020-02-14-2/+5
|\ | | | | Stop scheduling expiration of permanent infractions on edit
| * Stop scheduling expiration of permanent infractions on editGravatar Sebastiaan Zeeff2020-02-14-2/+5
|/ | | | | | | | | | | | | | | | | | | | | | | | | https://github.com/python-discord/bot/issues/751 The infraction edit command defined in `bot.cogs.moderation.management` contained a bug causing it to attempt to schedule an expiration task when turning a temporary infraction into a permanent infraction. Since the "expires_at" field of a permanent infractions is `None`, this caused an exception to occur in the scheduler: Traceback (most recent call last): File "/bot/bot/cogs/moderation/scheduler.py", line 415, in _scheduled_task expiry = dateutil.parser.isoparse(infraction["expires_at"]).replace(tzinfo=None) File "/usr/local/lib/python3.7/site-packages/dateutil/parser/isoparser.py", line 37, in func return f(self, str_in, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/dateutil/parser/isoparser.py", line 134, in isoparse components, pos = self._parse_isodate(dt_str) File "/usr/local/lib/python3.7/site-packages/dateutil/parser/isoparser.py", line 208, in _parse_isodate return self._parse_isodate_common(dt_str) File "/usr/local/lib/python3.7/site-packages/dateutil/parser/isoparser.py", line 213, in _parse_isodate_common len_str = len(dt_str) TypeError: object of type 'NoneType' has no len() I have solved this by adding a check that makes sure we only schedule an expiration task when the `"expires_at"` field has a truthy value (which all valid datetime strings are) using `if request_data['expires_at']`. IMPORTANT NOTE: While it's tempting to just skip the entire scheduling block for permanent infractions, it's essential to unschedule existing expiration tasks for this infraction as we're changing a temporary infraction to a permanent infraction. This commit closes #751
* Merge pull request #747 from mosguinz/pagniation-fixGravatar Sebastiaan Zeeff2020-02-12-1/+1
|\ | | | | Fix pagniation module for "last page" reaction
| * Fix pagniation module for "last page" reactionGravatar mosguinz2020-02-12-1/+1
|/ | | | Fixes #746.
* Merge pull request #625 from python-discord/emoji-cleanupGravatar Mark2020-02-09-14/+19
|\ | | | | Separate message/embed deletion and reaction deletion emojis
| * Remove clear reaction from paginatorsGravatar MarkKoz2020-02-09-17/+2
| | | | | | | | | | It could be confused with the delete reaction. Clearing reactions manually is rarely a useful feature anyway.
| * Merge remote-tracking branch 'origin/master' into emoji-cleanupGravatar MarkKoz2020-02-08-2128/+4834
| |\ | |/ |/|
* | Merge pull request #743 from python-discord/dep/b734/discord.py-1.3Gravatar Mark2020-02-07-39/+34
|\ \ | | | | | | Update discord.py to 1.3.1
| * | Pin discord.py to 1.3.xGravatar MarkKoz2020-02-07-2/+2
| | |
| * | Update discord.py to 1.3.1Gravatar MarkKoz2020-02-07-39/+34
|/ /
* | Merge pull request #542 from python-discord/fuzzy-tag-searchGravatar Shirayuki Nekomata2020-02-07-9/+82
|\ \ | | | | | | Make it easier for user to search for tags
| * \ Merge branch 'master' into fuzzy-tag-searchGravatar Matteo Bertucci2020-02-07-313/+199
| |\ \ | |/ / |/| |
* | | Merge pull request #737 from python-discord/remove-prometheusGravatar Mark2020-02-05-272/+128
|\ \ \ | | | | | | | | Remove prometheus related code
| * \ \ Merge branch 'master' into remove-prometheusGravatar S. Co12020-02-05-41/+71
| |\ \ \ | |/ / / |/| | |
* | | | Merge pull request #739 from python-discord/resources-moveGravatar Leon Sandøy2020-02-05-2/+2
|\ \ \ \ | | | | | | | | | | Move tools and questions guide to under resources
| * | | | Add missing slash to asking good questions url.Gravatar scragly2020-02-06-1/+1
| | | | |
| * | | | Move tools and questions guide to under resourcesGravatar scragly2020-02-05-2/+2
|/ / / / | | | | | | | | | | | | | | | | After the wiki pages adjustment to the resources page, these two urls are needing to be updated to point to the new correct locations for each page. Tools will be under resources, and Asking Good Questions is a guide, so will be under Guides.
* | | | Relay attachments to log channel before filters delete message (#630)Gravatar scragly2020-02-04-39/+69
|\ \ \ \ | | | | | | | | | | Relay attachments to log channel before filters delete message
| * | | | Use a trailing underscore to avoid name conflicts. Gravatar scragly2020-02-04-2/+2
| | | | | | | | | | | | | | | Previously used a leading underscore, but that's usually meant for non-used names.
| * | | | Change typehint name for the attachment-log constantGravatar Matteo Bertucci2020-02-03-1/+1
| | | | |
| * | | | Merge branch 'master' into #549-show-attachments-staffGravatar Matteo Bertucci2020-02-03-508/+1333
| |\ \ \ \ | |/ / / / |/| | | |
| * | | | Replace constant attachment-repost by the actual ID of #attachment-logGravatar Matteo Bertucci2020-02-03-4/+3
| | | | |
| * | | | Relay attchments to #attachment_logGravatar Akarys422019-12-14-1/+2
| | | | |
| * | | | Merge branch 'master' into #549-show-attachments-staffGravatar Matteo Bertucci2019-12-12-334/+1348
| |\ \ \ \
| * | | | | AntiSpam: remove bot field from DeletionContextGravatar MarkKoz2019-12-03-14/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The destination channel can be retrieved be accessing a message's guild. * Remove unused queue_consumption_tasks attribute.
| * | | | | ModLog: fix 0 message logs uploaded when no attachments givenGravatar MarkKoz2019-12-03-8/+3
| | | | | |
| * | | | | AntiSpam: correct a function annotationGravatar MarkKoz2019-12-03-3/+3
| | | | | |
| * | | | | AntiSpam: replace reupload_attachments with send_attachments from utilsGravatar MarkKoz2019-12-03-28/+6
| | | | | |
| * | | | | Utils: have send_attachments save attachments using the cached URLGravatar MarkKoz2019-12-03-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes it more likely to successfully save an attachment after it's been deleted.
| * | | | | Utils: log send_attachments failures instead of raising exceptionsGravatar MarkKoz2019-12-03-1/+10
| | | | | |
| * | | | | Utils: add send_attachments param to disable linking to too-large filesGravatar MarkKoz2019-12-03-7/+14
| | | | | |
| * | | | | Utils: use the guild's filesize_limit to determine max attachment sizeGravatar MarkKoz2019-12-03-4/+3
| | | | | |
| * | | | | Utils: support returning URLs from send_attachmentsGravatar MarkKoz2019-12-03-4/+8
| | | | | |
| * | | | | ModLog: use more generic type annotationsGravatar MarkKoz2019-12-03-4/+4
| | | | | |
| * | | | | Merge branch 'master' into #549-show-attachments-staffGravatar Matteo Bertucci2019-11-29-1055/+2005
| |\ \ \ \ \
| * | | | | | Re-upload attachments to #attachment-logGravatar Matteo Bertucci2019-11-28-1/+1
| | | | | | |
| * | | | | | Update try/except block in reupload_attachments()Gravatar Matteo Bertucci2019-11-28-2/+5
| | | | | | |
| * | | | | | Fix misspellingGravatar Matteo Bertucci2019-11-28-1/+1
| | | | | | | | | | | | | | | | | | | | | Co-Authored-By: Mark <[email protected]>
| * | | | | | Add try/except for attachment savingGravatar Akarys422019-11-27-5/+8
| | | | | | |
| * | | | | | Move attachments re-uploading to DeletionContext.add()Gravatar Akarys422019-11-27-24/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | So they are re-uploaded before being deleted
| * | | | | | Re-indent argumentsGravatar Matteo Bertucci2019-11-19-3/+3
| | | | | | |
| * | | | | | Use a context manager for the bufferGravatar Matteo Bertucci2019-11-15-4/+4
| | | | | | | | | | | | | | | | | | | | | Co-authored-by: Shirayuki Nekomata <[email protected]>