Skip to content

Commit

Permalink
start
Browse files Browse the repository at this point in the history
  • Loading branch information
MattBSG committed Aug 2, 2024
1 parent 3d9fef2 commit 9095d4b
Showing 1 changed file with 35 additions and 1 deletion.
36 changes: 35 additions & 1 deletion modules/utility.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ def __init__(self, bot):
)
self.bot.tree.add_command(self.historyContextMenu, guild=discord.Object(id=config.nintendoswitch))

# Ensure reaction ttl index is created
self.reactDB = mclient.bowser.reactions
self.reactDB.create_index([("timestamp", pymongo.DESCENDING)], expireAfterSeconds=3600)

# Called after automod filter finished, because of the affilite link reposter. We also want to wait for other items in this function to complete to call said reposter.
async def on_automod_finished(self, message):
if message.type == discord.MessageType.premium_guild_subscription:
Expand Down Expand Up @@ -153,9 +157,39 @@ async def on_automod_finished(self, message):
embed_message = await message.channel.send(embed=embed)
await embed_message.add_reaction('🗑️')

# Handle :wastebasket: reactions for user deletions on messages reposted on a user's behalf
@commands.Cog.listener()
async def on_raw_reaction_add(self, payload):
await self.process_affiliate_reactions(payload)
await self.log_reaction(payload)

@commands.Cog.listener()
async def on_raw_reaction_remove(self, payload):
await self.log_reaction(payload)

async def log_reaction(self, payload):
if not payload.guild_id or payload.guild_id != config.nintendoswitch:
return
if payload.user_id == self.bot.user.id:
return
if not payload.emoji.name:
return

self.reactDB.insert_one({
'type': payload.event_type,
'emoji': str(payload.emoji),
'emoji_id': payload.emoji.id,
'burst': payload.burst,
'is_custom_emoji': payload.emoji.is_custom_emoji(),
'message': payload.message_id,
'message_author': payload.message_author_id,
'user': payload.user_id,
'channel': payload.channel_id,
'guild': payload.guild_id,
'timestamp': datetime.now(timezone.utc)
})

# Handle :wastebasket: reactions for user deletions on messages reposted on a user's behalf
async def process_affiliate_reactions(self, payload):
if not payload.member:
return # Not in a guild
if payload.emoji.name != '🗑️':
Expand Down

0 comments on commit 9095d4b

Please sign in to comment.