diff options
author | 2018-11-26 23:46:23 +0100 | |
---|---|---|
committer | 2018-11-26 22:46:23 +0000 | |
commit | 8cd2f733baa00ddeccf8f3e84594b658fff24694 (patch) | |
tree | 757ea11a45c749ea3521e6f287f7dc0314ac29c6 | |
parent | Delete GitLab CI YAML - we're on Azure now, and this still triggers (diff) |
Refactored - codeblocks now make use of the bot.utils.messages util. (#202)
* Refactored - codeblocks now make use of the bot.utils.messages util.
* Update bot/cogs/bot.py
Co-Authored-By: heavysaturn <[email protected]>
* Fix up flake8 complaints.
Co-Authored-By: jchristgit <[email protected]>
-rw-r--r-- | bot/cogs/bot.py | 46 | ||||
-rw-r--r-- | bot/utils/messages.py | 4 |
2 files changed, 10 insertions, 40 deletions
diff --git a/bot/cogs/bot.py b/bot/cogs/bot.py index 6353557d9..b684ad886 100644 --- a/bot/cogs/bot.py +++ b/bot/cogs/bot.py @@ -3,14 +3,15 @@ import logging import re import time -from discord import Embed, Message, RawMessageUpdateEvent, RawReactionActionEvent +from discord import Embed, Message, RawMessageUpdateEvent from discord.ext.commands import Bot, Context, command, group from dulwich.repo import Repo from bot.constants import ( - Channels, Emojis, Guild, Roles, URLs + Channels, Guild, Roles, URLs ) from bot.decorators import with_role +from bot.utils.messages import wait_for_deletion log = logging.getLogger(__name__) @@ -342,7 +343,10 @@ class Bot: howto_embed = Embed(description=howto) bot_message = await msg.channel.send(f"Hey {msg.author.mention}!", embed=howto_embed) self.codeblock_message_ids[msg.id] = bot_message.id - await bot_message.add_reaction(Emojis.cross_mark) + + self.bot.loop.create_task( + wait_for_deletion(bot_message, user_ids=(msg.author.id,), client=self.bot) + ) else: return @@ -380,42 +384,6 @@ class Bot: await bot_message.delete() del self.codeblock_message_ids[payload.message_id] - async def on_raw_reaction_add(self, payload: RawReactionActionEvent): - # Ignores reactions added by the bot or added to non-codeblock correction embed messages - # Also ignores the reaction if the user can't be loaded - # Retrieve Member object instead of user in order to compare roles later - # Try except used to catch instances where guild_id not in payload. - try: - member = self.bot.get_guild(payload.guild_id).get_member(payload.user_id) - except AttributeError: - return - - if member is None: - return - if member.bot or payload.message_id not in self.codeblock_message_ids.values(): - return - - # Finds the appropriate bot message/ user message pair and assigns them to variables - for user_message_id, bot_message_id in self.codeblock_message_ids.items(): - if bot_message_id == payload.message_id: - channel = self.bot.get_channel(payload.channel_id) - user_message = await channel.get_message(user_message_id) - bot_message = await channel.get_message(bot_message_id) - break - - # If the reaction was clicked on by the author of the user message, deletes the bot message - if member.id == user_message.author.id: - await bot_message.delete() - del self.codeblock_message_ids[user_message_id] - return - - # If the reaction was clicked by staff (helper or higher), deletes the bot message - for role in member.roles: - if role.id in (Roles.owner, Roles.admin, Roles.moderator, Roles.helpers): - await bot_message.delete() - del self.codeblock_message_ids[user_message_id] - return - def setup(bot): bot.add_cog(Bot(bot)) diff --git a/bot/utils/messages.py b/bot/utils/messages.py index e697b0ed6..fc38b0127 100644 --- a/bot/utils/messages.py +++ b/bot/utils/messages.py @@ -7,13 +7,15 @@ from discord import Embed, File, Message, TextChannel from discord.abc import Snowflake from discord.errors import HTTPException +from bot.constants import Emojis + MAX_SIZE = 1024 * 1024 * 8 # 8 Mebibytes async def wait_for_deletion( message: Message, user_ids: Sequence[Snowflake], - deletion_emojis: Sequence[str] = ("❌",), + deletion_emojis: Sequence[str] = (Emojis.cross_mark,), timeout: float = 60 * 5, attach_emojis=True, client=None |