aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
* Create a UserMentionOrID converter.Gravatar Leon Sandøy2020-07-15-1/+24
| | | | | | | | | | | | | | | | | | When we're using the !reply command, using a regular UserConverter is somewhat problematic. For example, if I wanted to send the message "lemon loves you", then I'd try to write `!reply lemon loves you` - however, the optional User converter would then try to convert `lemon` into a User, which it would successfully do since there's like 60 lemons on our server. As a result, the message "loves you" would be sent to a user called lemon.. god knows which one. To solve this bit of ambiguity, I introduce a new converter which only converts user mentions or user IDs into User, not strings that may be intended as part of the message you are sending. https://github.com/python-discord/bot/issues/1041
* Ves' refactorGravatar Leon Sandøy2020-07-15-15/+16
| | | Co-authored-by: Sebastiaan Zeeff <[email protected]>
* Add some stats for DMs sent and received.Gravatar Leon Sandøy2020-07-15-0/+3
| | | | https://github.com/python-discord/bot/issues/1041
* Add the user ID to the username in dm relays.Gravatar Leon Sandøy2020-07-15-1/+1
| | | | | | | Without this, it is difficult to know precisely who the user that is DMing us is, which might be useful to us. https://github.com/python-discord/bot/issues/1041
* Restore DM user caching.Gravatar Leon Sandøy2020-07-15-6/+22
| | | | This reverts commit 042f472a
* Remove caching of last_dm_user.Gravatar Leon Sandøy2020-07-15-25/+20
| | | | | | | | | | | | | If you're typing up a reply and the bot gets another DM while you're typing, you might accidentally send your reply to the wrong person. This could happen even if you're very attentive, because it might be a matter of milliseconds. The complexity to prevent this isn't worth the convenience of the feature, and it's nice to get rid of the caching as well, so I've decided to just make .reply require a user for every reply. https://github.com/python-discord/bot/issues/1041
* Merge branch 'master' into dm_relayGravatar Leon Sandøy2020-07-13-173/+169
|\
| * Merge pull request #1039 from ↵Gravatar Dennis Pham2020-07-13-4/+16
| |\ | | | | | | | | | | | | python-discord/1038_allow_role_mentions_in_specific_areas Allow role mentions in specific areas
| | * Merge branch 'master' into 1038_allow_role_mentions_in_specific_areasGravatar Dennis Pham2020-07-13-169/+153
| | |\ | | |/ | |/|
| * | Fix rescheduling of edited infractionsGravatar MarkKoz2020-07-12-1/+1
| | | | | | | | | | | | | | | | | | | | | It was attempting to schedule a dictionary instead of a coroutine. Fixes #1043 Fixes BOT-6Y
| * | Merge pull request #1017 from python-discord/feat/backend/800/scheduler-redesignGravatar Mark2020-07-12-169/+153
| |\ \ | | | | | | | | Scheduler Redesign
| | * \ Merge branch 'master' into feat/backend/800/scheduler-redesignGravatar Mark2020-07-12-217/+683
| | |\ \ | | |/ / | |/| |
| | * | Scheduler: document coroutine closing elsewhereGravatar MarkKoz2020-07-06-4/+12
| | | |
| | * | Scheduler: assert the coroutine hasn't been awaited yetGravatar MarkKoz2020-07-06-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | It'd fail to schedule the coroutine otherwise anyway. There is also the potential to close the coroutine, which may be unexpected to see for a coroutine that was already running (despite being documented).
| | * | Scheduler: more verbose logging in _await_laterGravatar MarkKoz2020-06-30-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Showing the task ID in the logs makes them distinguishable from logs for other tasks. The coroutine state is logged because it may come in handy while debugging; the coroutine inspection check hasn't been proven yet in production.
| | * | Scheduler: explain the name param in the docstringGravatar MarkKoz2020-06-29-0/+4
| | | |
| | * | Scheduler: add details to class docstringGravatar MarkKoz2020-06-29-1/+11
| | | |
| | * | Scheduler: only close unawaited coroutinesGravatar MarkKoz2020-06-25-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | The coroutine may cancel the scheduled task, which would also trigger the finally block. The coroutine isn't necessarily finished when it cancels the task, so it shouldn't be closed in this case.
| | * | Scheduler: remove duplicate dict deleteGravatar MarkKoz2020-06-24-1/+0
| | | | | | | | | | | | | | | | | | | | The task is already popped from the dict, so there is no need to delete it afterwards.
| | * | Scheduler: close coroutine if task ID already existsGravatar MarkKoz2020-06-23-1/+7
| | | | | | | | | | | | | | | | This prevents unawaited coroutine warnings.
| | * | Update InfractionScheduler's scheduler to the new APIGravatar MarkKoz2020-06-20-17/+12
| | | |
| | * | Update HelpChannels's scheduler to the new APIGravatar MarkKoz2020-06-20-50/+20
| | | |
| | * | Update Silence's scheduler to the new APIGravatar MarkKoz2020-06-20-26/+6
| | | |
| | * | Update Reminders's scheduler to the new APIGravatar MarkKoz2020-06-20-14/+15
| | | |
| | * | Update Filtering's scheduler to the new APIGravatar MarkKoz2020-06-20-10/+6
| | | |
| | * | Scheduler: add a method to schedule at a specific datetimeGravatar MarkKoz2020-06-20-0/+13
| | | |
| | * | Scheduler: add a method to schedule with a delayGravatar MarkKoz2020-06-20-0/+19
| | | |
| | * | Scheduler: rename "task" param to "coroutine"Gravatar MarkKoz2020-06-20-3/+3
| | | | | | | | | | | | | | | | | | | | Naming it "task" is inaccurate because `create_task` accepts a coroutine rather than a Task. What it does is wrap the coroutine in a Task.
| | * | Scheduler: drop _task suffix from method namesGravatar MarkKoz2020-06-20-3/+3
| | | | | | | | | | | | | | | | It's redundant. After all, this scheduler cannot schedule anything else.
| | * | Scheduler: remove ignore_missing paramGravatar MarkKoz2020-06-20-10/+5
| | | | | | | | | | | | | | | | | | | | The ability to use the `in` operator makes this obsolete. Callers can check themselves if a task exists before they try to cancel it.
| | * | Scheduler: use pop instead of get when cancellingGravatar MarkKoz2020-06-19-7/+7
| | | |
| | * | Scheduler: add support for in operatorGravatar MarkKoz2020-06-19-0/+4
| | | |
| | * | Scheduler: name tasksGravatar MarkKoz2020-06-19-1/+1
| | | | | | | | | | | | | | | | Makes them easier to identify when debugging.
| | * | Scheduler: directly take the awaitable to scheduleGravatar MarkKoz2020-06-19-23/+4
| | | | | | | | | | | | | | | | | | | | | | | | This is a major change which simplifies the interface. It removes the need to implement an abstract method, which means the class can now be instantiated rather than subclassed.
| | * | Scheduler: use separate logger for each instanceGravatar MarkKoz2020-06-19-24/+17
| | | | | | | | | | | | | | | | | | | | | | | | Each instance now requires a name to be specified, which will be used as the suffix of the logger's name. This removes the need to manually prepend every log message with the name.
| | | * Revert "Ping @Moderators in ModLog"Gravatar Leon Sandøy2020-07-13-15/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Let's continue to use "@everyone" for now, and add an explicit allow for it so that it successfully pings people. There's a full justification for this in the pull request. https://github.com/python-discord/bot/issues/1038
| | | * Remove pointless comment Gravatar Leon Sandøy2020-07-12-1/+1
| | | | | | | | | | | | | | | | | | | | This comment violates the DRY principle. Co-authored-by: Sebastiaan Zeeff <[email protected]>
| | | * Allow role pings in Syncers and help_channels.pyGravatar Leon Sandøy2020-07-12-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that we're running Discord 1.4.0a, we need to explicitely allow all the role mentions for sends that don't use ping one of the globally whitelisted role pings, which are Moderators, Admins and Owners. We were pinging roles other than Mods+ in exactly two cases: - Inside the Syncers, whenever we ask for sync confirmation (if the number of roles or users to sync is unusually high) - In the help_channels.py system, whenever we max out help channels and are unable to create more. This commit addresses both of these. GitHub #1038 https://github.com/python-discord/bot/issues/1038
| | | * Ping @Moderators in ModLogGravatar Leon Sandøy2020-07-12-14/+14
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of pinging @everyone, let's just ping the people who actually need to see the mod alerts or the modlogs, which would be the mods. `@everyone` is currently not permitted by our allowed_mentions setting, so this also restores pings to those channels. GitHub #1038 https://github.com/python-discord/bot/issues/1038
* | | Store last DM user in RedisCache.Gravatar Leon Sandøy2020-07-13-12/+22
| | | | | | | | | | | | | | | | | | | | | Also now catches the exception if a user has disabled DMs, and adds a red cross reaction. https://github.com/python-discord/bot/issues/667
* | | Remove redundant clean_content variable.Gravatar Leon Sandøy2020-07-13-5/+2
| | | | | | | | | | | | https://github.com/python-discord/bot/issues/667
* | | Don't run on_message if self.webhook is None.Gravatar Leon Sandøy2020-07-13-1/+1
| | | | | | | | | | | | https://github.com/python-discord/bot/issues/667
* | | Only mods+ may use the commands in this cog.Gravatar Leon Sandøy2020-07-13-0/+6
| | | | | | | | | | | | https://github.com/python-discord/bot/issues/667
* | | Add avatar_url in python_news.pyGravatar Leon Sandøy2020-07-13-0/+2
| | | | | | | | | | | | https://github.com/python-discord/bot/issues/667
* | | Better docstring for DMRelay cog.Gravatar Leon Sandøy2020-07-13-1/+1
| | | | | | | | | | | | https://github.com/python-discord/bot/issues/667
* | | Add a way to respond to DMs.Gravatar Leon Sandøy2020-07-12-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This shouldn't be used as a replacement for ModMail, but I think it makes sense to have the feature just in case #dm-log provides an interesting use-case where responding as the bot makes sense. It's a bit of a curiosity, and Ves hates it, but I included it anyway. https://github.com/python-discord/bot/issues/667
* | | Fix DuckPond tests now that send_webhook is gone.Gravatar Leon Sandøy2020-07-12-39/+12
| | | | | | | | | | | | | | | | | | | | | | | | Some of the tests were failing because they were expecting send_webhook to be a method of the DuckPond cog, other tests simply were no longer applicable, and have been removed. https://github.com/python-discord/bot/issues/667
* | | Only relay DMs, and only from humans.Gravatar Leon Sandøy2020-07-12-0/+4
| | | | | | | | | | | | https://github.com/python-discord/bot/issues/667
* | | Replace channel ID with webhook ID for dm_log.Gravatar Leon Sandøy2020-07-12-4/+2
| | | | | | | | | | | | https://github.com/python-discord/bot/issues/667
* | | Relay all DMs and embeds to #dm-log.Gravatar Leon Sandøy2020-07-12-0/+67
| | | | | | | | | | | | https://github.com/python-discord/bot/issues/667