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-08-15 08:47:42 +00:00
|
|
|
from modules.config import c_boost, c_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
|
|
|
|
|
2024-08-15 08:47:42 +00:00
|
|
|
embed = c_greet.create_greet_embed(member, config.welcome_message)
|
2024-04-05 12:05:36 +00:00
|
|
|
|
|
|
|
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-08-15 08:39:48 +00:00
|
|
|
embed = c_boost.create_boost_embed(
|
2024-07-17 11:47:26 +00:00
|
|
|
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:
|
2024-08-12 07:35:37 +00:00
|
|
|
log_msg = f"{ctx.author.name} executed .{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:
|
2024-08-12 07:35:37 +00:00
|
|
|
log_msg = f"{ctx.author.name} executed /{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))
|