Ruby-Cogs/bankdecay/common/listeners.py
2025-05-23 02:30:00 -04:00

84 lines
2.5 KiB
Python

import discord
from redbot.core import commands
from ..abc import MixinMeta
class Listeners(MixinMeta):
@commands.Cog.listener()
async def on_message(self, message: discord.Message) -> None:
if not message.guild:
return
if not message.author:
return
if message.author.bot:
return
self.db.refresh_user(message.author)
@commands.Cog.listener()
async def on_message_edit(self, before: discord.Message, after: discord.Message) -> None:
guild = before.guild or after.guild
if not guild:
return
author = before.author or after.author
if not author:
return
if author.bot:
return
self.db.refresh_user(author)
@commands.Cog.listener()
async def on_raw_reaction_add(self, payload: discord.RawReactionActionEvent) -> None:
if not payload.guild_id:
return
guild = self.bot.get_guild(payload.guild_id)
if not guild:
return
if not payload.member:
return
if payload.member.bot:
return
self.db.refresh_user(payload.member)
@commands.Cog.listener()
async def on_raw_reaction_remove(self, payload: discord.RawReactionActionEvent) -> None:
if not payload.guild_id:
return
guild = self.bot.get_guild(payload.guild_id)
if not guild:
return
if not payload.member:
return
if payload.member.bot:
return
self.db.refresh_user(payload.member)
@commands.Cog.listener()
async def on_presence_update(self, before: discord.Member, after: discord.Member) -> None:
guild = before.guild or after.guild
if not guild:
return
author = before or after
if author.bot:
return
self.db.refresh_user(author)
@commands.Cog.listener()
async def on_member_update(self, before: discord.Member, after: discord.Member) -> None:
guild = before.guild or after.guild
if not guild:
return
author = before or after
if author.bot:
return
self.db.refresh_user(author)
@commands.Cog.listener()
async def on_voice_state_update(
self, member: discord.Member, before: discord.VoiceState, after: discord.VoiceState
) -> None:
if not member.guild:
return
if member.bot:
return
self.db.refresh_user(member)