84 lines
2.5 KiB
Python
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)
|