aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
...
| | | | * | | | | | | | | | Incidents tests: write tests for `on_message`Gravatar kwzrd2020-06-13-0/+27
| | | | | | | | | | | | | |
| | | | * | | | | | | | | | Incidents tests: test non-404 error responseGravatar kwzrd2020-06-13-0/+20
| | | | | | | | | | | | | |
| | | | * | | | | | | | | | Incidents: log error on non-404 responseGravatar kwzrd2020-06-13-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We do not wish to log 404 exceptions as those are expected, however, if something else goes wrong, we shouldn't silence it. This also removes the explicit None return as it only adds syntax noise.
| | | | * | | | | | | | | | Incidents tests: write tests for `resolve_message`Gravatar kwzrd2020-06-13-0/+56
| | | | | | | | | | | | | |
| | | | * | | | | | | | | | Incidents tests: move `mock_404` into module namespaceGravatar kwzrd2020-06-13-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will be useful for others tests as well.
| | | | * | | | | | | | | | Incidents tests: write tests for `archive`Gravatar kwzrd2020-06-13-2/+63
| | | | | | | | | | | | | |
| | | | * | | | | | | | | | Incidents tests: set up base class for `Incidents`Gravatar kwzrd2020-06-13-2/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For cleanliness, I've decided to make a separate class for each method. Since most tests will want to have an `Incident` instance ready, they can inherit the `setUp` from `TestIncidents`, which does not make any assertions on its own.
| | | | * | | | | | | | | | Incidents tests: improve mock `Signal` name & move defGravatar kwzrd2020-06-13-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Let's make it clear that this is our own mock. We also move the definition to the top of the module.
| | | | * | | | | | | | | | Incidents tests: use our own helper mocksGravatar kwzrd2020-06-13-16/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No reason to build own MagicMocks as we already have helpers that more accurately mimic the mocked behaviour.
| | | | * | | | | | | | | | Incidents tests: write tests for module-level helpersGravatar kwzrd2020-06-12-0/+135
| | | | | | | | | | | | | |
| | | | * | | | | | | | | | Incidents tests: create new test moduleGravatar kwzrd2020-06-12-0/+0
| | | | | | | | | | | | | |
| | | | * | | | | | | | | | Merge branch 'origin/master' into kwzrd/incidentsGravatar kwzrd2020-06-12-22/+62
| | | | |\ \ \ \ \ \ \ \ \ \
| | | | * | | | | | | | | | | Incidents: extend documentationGravatar kwzrd2020-06-12-11/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a proper class docstring & small touch-ups to local comments where necessary.
| | | | * | | | | | | | | | | Incidents: avoid lambda check; make regular functionGravatar kwzrd2020-06-12-5/+5
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: log `event_lock` releaseGravatar kwzrd2020-06-12-0/+1
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: do not process reaction events from botsGravatar kwzrd2020-06-12-2/+3
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: implement `process_event` coroutineGravatar kwzrd2020-06-12-3/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This contains the main logic for handling reactions and glues all the helpers together. Unfortunately, gracefully handling everything that can go wrong in the process requires quite a lot of code ~ but, at least to me, it seems like this all should now be fairly safe. The idea to await the message delete event before releasing the lock was conceived by Ves, while Mark helped me refine it. Co-authored-by: Sebastiaan Zeeff <[email protected]> Co-authored-by: MarkKoz <[email protected]>
| | | | * | | | | | | | | | | Incidents: implement `make_confirmation_task` methodGravatar kwzrd2020-06-12-0/+15
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: implement `archive` methodGravatar kwzrd2020-06-12-1/+39
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: implement reaction listenerGravatar kwzrd2020-06-12-0/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See docstring!
| | | | * | | | | | | | | | | Incidents: implement `resolve_message`Gravatar kwzrd2020-06-12-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See docstring. The exception log is DEBUG level as failure does not necessarily indicate that we have done something wrong. We rely on the API to tell us that the message no longer exists in situations where we have 2 coroutines racing to archive the same message.
| | | | * | | | | | | | | | | Incidents: make `crawl_incidents` smarterGravatar kwzrd2020-06-12-6/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The crawler now avoids making API calls for messages which: * Are not incidents * Already have all signals As a result, we can sleep only after making actual calls. This speeds up the task completion considerable, while also making it lighter on the API. Victory!
| | | | * | | | | | | | | | | Incidents: move `add_signals` to module namespaceGravatar kwzrd2020-06-12-16/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Looks like we'll need quite a few helpers, and I think it's cleaner to keep them at module level. It helps avoid the question of: what do I do if a staticmethod depends on another staticmethod?
| | | | * | | | | | | | | | | Incidents: implement `has_signals` helperGravatar kwzrd2020-06-12-0/+6
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: implement `own_reactions` helperGravatar kwzrd2020-06-12-1/+6
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: abstract incident checking into a helper methodGravatar kwzrd2020-06-12-24/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code is now basically self-documenting, the docstring is no longer necessary. The ultimate goal is to allow `crawl_incidents` to be more smart about which messages need to be passed to `add_signals`, so that it doesn't need to sleep after each message.
| | | | * | | | | | | | | | | Incidents: add `event_lock` for simple event synchronizationGravatar kwzrd2020-06-12-1/+3
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: only `add_signals` if missingGravatar kwzrd2020-06-12-2/+10
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: make `on_message` ignore pinned messagesGravatar kwzrd2020-06-12-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is now necessary as we call the listener ourselves from the crawl task. An already existing, pinned message, can be received.
| | | | * | | | | | | | | | | Incidents: implement & schedule `crawl_incidents` taskGravatar kwzrd2020-06-12-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See docstring for further information. This will run on start-up to retroactively add missing emoji. Ratelimit-wise this should be fine, as there should never be too many missing emoji.
| | | | * | | | | | | | | | | Incidents: implement `on_message` listener & guardsGravatar kwzrd2020-06-12-3/+20
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: implement `add_signals` helperGravatar kwzrd2020-06-12-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Looks like it can be static, at least for now.
| | | | * | | | | | | | | | | Incidents: define method stubs for message event handlingGravatar kwzrd2020-06-12-0/+10
| | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | Incidents: define allowed roles and emojiGravatar kwzrd2020-06-11-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These serve as whitelists, i.e. any reaction using an emoji not explicitly allowed, or from a user not specifically allowed, will be rejected. Such reactions will be removed by the bot.
| | | | * | | | | | | | | | | Merge branch 'origin/master' into kwzrd/incidentsGravatar kwzrd2020-06-11-53/+115
| | | | |\ \ \ \ \ \ \ \ \ \ \
| | | | * | | | | | | | | | | | Incidents: add #incidents-archive webhook constantGravatar kwzrd2020-06-11-1/+2
| | | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | | Incidents: add #incidents-archive channel constantGravatar kwzrd2020-06-11-0/+2
| | | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | | Incidents: create Signal enum & link members with emojisGravatar kwzrd2020-06-08-0/+10
| | | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | | Incidents: add new emoji constantsGravatar kwzrd2020-06-08-0/+8
| | | | | | | | | | | | | | | |
| | | | * | | | | | | | | | | | Incidents: add incidents module & new ext boilerplateGravatar kwzrd2020-06-08-1/+17
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | * | | Merge branch 'role-reminders' of github.com:python-discord/bot into ↵Gravatar kosayoda2020-07-19-0/+1
| | | | | | | | | | | | | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | role-reminders
| | | | | | | | | | | | | | * | | Add whitespace to improve readabilityGravatar Kieran Siek2020-07-19-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Co-authored-by: Mark <[email protected]>
| | | | | | | | | | | | | * | | | Revert "Remove duplicate reminder deletion."Gravatar kosayoda2020-07-19-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 776b4379c478284803a4a526b5f14fe63d8e7c01. This is already being fixed in #835, and therefore is no longer required.
| | | | | | | | | | | | | * | | | Remove duplicate mentions from reminder argumentsGravatar kosayoda2020-07-19-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This also accounts for the author passing themselves to mention, and therefore avoids the user from being told they're not allowed to mention themselves even though they could.
| | | | | | | | | | | | | * | | | Refactor commands return typeGravatar kosayoda2020-07-19-5/+8
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | * | | | Move mentions validation to another methodGravatar kosayoda2020-07-19-13/+20
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | * | | | Refactor reminder edits to reduce code duplicationGravatar kosayoda2020-07-19-40/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The reminder expiration returnedfrom the API call is also now parsed again even when the edit is to the duration since it does not matter and trying to keep it DRY while still doing that check is a pain.
| | | | | | | | | | | | | * | | | Rename method to improve readabilityGravatar kosayoda2020-07-19-3/+3
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | * | | | Fix incorrect typehint and shorten method nameGravatar kosayoda2020-07-19-3/+3
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | * | | | Extract `send_denial` to a utility functionGravatar kosayoda2020-07-19-17/+20
| | | | | | | | | | | | | | | | |