Skip to content

Commit 5a05869

Browse files
committed
Add a bunch of new events, fix plugin ready
1 parent da09dab commit 5a05869

File tree

5 files changed

+33
-19
lines changed

5 files changed

+33
-19
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ however, insignificant breaking changes do not guarantee a major version bump, s
3434
- `?contact` now sends members a DM.
3535
- `level_permissions` and `command_permissions` would sometimes be reset. ([GH #2856](https://github.com/kyb3r/modmail/issues/2856))
3636
- Command truncated after && in alias. ([GH #2870](https://github.com/kyb3r/modmail/issues/2870))
37+
- `on_plugins_ready` event for plugins works now.
3738

3839
### Improved
3940

@@ -42,6 +43,8 @@ however, insignificant breaking changes do not guarantee a major version bump, s
4243

4344
### Internal
4445
- Use enums in config. ([GH #2821](https://github.com/kyb3r/modmail/issues/2821))
46+
- `on_thread_close` event for plugins.
47+
- `on_thread_reply` event for plugins.
4548

4649
# v3.6.2
4750

bot.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -811,6 +811,8 @@ async def process_dm_modmail(self, message: discord.Message) -> None:
811811
await self.add_reaction(message, blocked_emoji)
812812
else:
813813
await self.add_reaction(message, sent_emoji)
814+
self.bot.dispatch("thread_reply", thread, False, message, False, False)
815+
814816

815817
async def get_contexts(self, message, *, cls=commands.Context):
816818
"""
@@ -1131,6 +1133,25 @@ async def on_raw_reaction_add(self, payload):
11311133
if self.config["transfer_reactions"]:
11321134
await self.handle_reaction_events(payload)
11331135

1136+
react_message_id = tryint(self.bot.config.get("react_to_contact_message"))
1137+
react_message_emoji = self.bot.config.get("react_to_contact_emoji")
1138+
if all((react_message_id, react_message_emoji)):
1139+
if payload.message_id == react_message_id:
1140+
if payload.emoji.is_unicode_emoji():
1141+
emoji_fmt = payload.emoji.name
1142+
else:
1143+
emoji_fmt = f"<:{payload.emoji.name}:{payload.emoji.id}>"
1144+
1145+
if emoji_fmt == react_message_emoji:
1146+
channel = self.bot.get_channel(payload.channel_id)
1147+
member = channel.guild.get_member(payload.user_id)
1148+
message = await channel.fetch_message(payload.message_id)
1149+
await message.remove_reaction(payload.emoji, member)
1150+
1151+
ctx = await self.bot.get_context(message)
1152+
ctx.author = member
1153+
await ctx.invoke(self.contact, user=member, manual_trigger=False)
1154+
11341155
async def on_raw_reaction_remove(self, payload):
11351156
if self.config["transfer_reactions"]:
11361157
await self.handle_reaction_events(payload)

cogs/modmail.py

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,25 +1012,8 @@ async def contact(
10121012
await ctx.message.delete()
10131013

10141014
@commands.Cog.listener()
1015-
async def on_raw_reaction_add(self, payload):
1016-
react_message_id = tryint(self.bot.config.get("react_to_contact_message"))
1017-
react_message_emoji = self.bot.config.get("react_to_contact_emoji")
1018-
if all((react_message_id, react_message_emoji)):
1019-
if payload.message_id == react_message_id:
1020-
if payload.emoji.is_unicode_emoji():
1021-
emoji_fmt = payload.emoji.name
1022-
else:
1023-
emoji_fmt = f"<:{payload.emoji.name}:{payload.emoji.id}>"
1024-
1025-
if emoji_fmt == react_message_emoji:
1026-
channel = self.bot.get_channel(payload.channel_id)
1027-
member = channel.guild.get_member(payload.user_id)
1028-
message = await channel.fetch_message(payload.message_id)
1029-
await message.remove_reaction(payload.emoji, member)
1030-
1031-
ctx = await self.bot.get_context(message)
1032-
ctx.author = member
1033-
await ctx.invoke(self.contact, user=member, manual_trigger=False)
1015+
async def on_plugin_ready(self):
1016+
print('hi')
10341017

10351018
@commands.group(invoke_without_command=True)
10361019
@checks.has_permissions(PermissionLevel.MODERATOR)

cogs/plugins.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import discord
1717
from discord.ext import commands
18+
from discord.utils import async_all
1819

1920
from pkg_resources import parse_version
2021

@@ -145,6 +146,9 @@ async def initial_load_plugins(self):
145146
continue
146147

147148
logger.debug("Finished loading all plugins.")
149+
150+
self.bot.dispatch('plugins_ready')
151+
148152
self._ready_event.set()
149153
await self.bot.config.update()
150154

core/thread.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,8 @@ async def _close(
486486
tasks.append(self.channel.delete())
487487

488488
await asyncio.gather(*tasks)
489+
self.bot.dispatch("thread_close", self, closer, silent, delete_channel, message, scheduled)
490+
489491

490492
async def cancel_closure(self, auto_close: bool = False, all: bool = False) -> None:
491493
if self.close_task is not None and (not auto_close or all):
@@ -779,6 +781,7 @@ async def reply(
779781
)
780782

781783
await asyncio.gather(*tasks)
784+
self.bot.dispatch("thread_reply", self, True, message, anonymous, plain)
782785

783786
async def send(
784787
self,

0 commit comments

Comments
 (0)