1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-02 22:23:13 +00:00
Lumi/handlers/event_handler.py

88 lines
2.6 KiB
Python
Raw Normal View History

2024-04-05 12:05:36 +00:00
from discord.ext.commands import Cog
2024-07-17 12:01:12 +00:00
from loguru import logger
2024-04-05 12:05:36 +00:00
2024-04-26 11:30:44 +00:00
import lib.embeds.boost
2024-06-20 17:48:49 +00:00
from lib.embeds.greet import Greet
2024-07-08 19:50:07 +00:00
from services.blacklist_service import BlacklistUserService
2024-07-17 12:01:12 +00:00
from services.config_service import GuildConfig
2024-04-05 12:05:36 +00:00
class EventHandler(Cog):
def __init__(self, client):
self.client = client
@Cog.listener()
async def on_member_join(self, member):
2024-07-08 19:50:07 +00:00
if BlacklistUserService.is_user_blacklisted(member.id):
return
2024-04-05 12:05:36 +00:00
config = GuildConfig(member.guild.id)
if not config.welcome_channel_id:
return
embed = Greet.message(member, config.welcome_message)
try:
2024-07-17 11:47:26 +00:00
await member.guild.get_channel(config.welcome_channel_id).send(
embed=embed,
content=member.mention,
)
2024-04-05 12:05:36 +00:00
except Exception as e:
2024-07-17 11:47:26 +00:00
logger.warning(
f"Greet message not sent in '{member.guild.name}'. Channel ID may be invalid. {e}",
)
2024-04-05 12:05:36 +00:00
2024-04-26 11:30:44 +00:00
@Cog.listener()
async def on_member_update(self, before, after):
2024-07-08 19:50:07 +00:00
if BlacklistUserService.is_user_blacklisted(after.id):
return
2024-04-26 11:30:44 +00:00
if before.premium_since is None and after.premium_since is not None:
await self.on_nitro_boost(after)
@staticmethod
async def on_nitro_boost(member):
config = GuildConfig(member.guild.id)
if not config.boost_channel_id:
return
2024-07-17 11:47:26 +00:00
embed = lib.embeds.boost.Boost.message(
member,
config.boost_message,
config.boost_image_url,
)
2024-04-26 11:30:44 +00:00
try:
2024-07-17 11:47:26 +00:00
await member.guild.get_channel(config.boost_channel_id).send(
embed=embed,
content=member.mention,
)
2024-04-26 11:30:44 +00:00
except Exception as e:
2024-07-17 11:47:26 +00:00
logger.warning(
f"Boost message not sent in '{member.guild.name}'. Channel ID may be invalid. {e}",
)
2024-04-26 11:13:58 +00:00
2024-04-05 12:05:36 +00:00
@Cog.listener()
async def on_command_completion(self, ctx) -> None:
log_msg = "{} executed .{}".format(ctx.author.name, ctx.command.qualified_name)
2024-04-05 12:05:36 +00:00
if ctx.guild is not None:
2024-06-20 18:57:45 +00:00
logger.debug(f"{log_msg} | guild: {ctx.guild.name} ")
2024-04-05 12:05:36 +00:00
else:
2024-06-20 18:57:45 +00:00
logger.debug(f"{log_msg} in DMs")
2024-04-05 12:05:36 +00:00
@Cog.listener()
async def on_application_command_completion(self, ctx) -> None:
log_msg = "{} executed /{}".format(ctx.author.name, ctx.command.qualified_name)
2024-04-05 12:05:36 +00:00
if ctx.guild is not None:
2024-06-20 18:57:45 +00:00
logger.debug(f"{log_msg} | guild: {ctx.guild.name} ")
2024-04-05 12:05:36 +00:00
else:
2024-06-20 18:57:45 +00:00
logger.debug(f"{log_msg} in DMs")
2024-04-05 12:05:36 +00:00
def setup(client):
client.add_cog(EventHandler(client))