Make a child class for Client and use that, otherwise "base" listeners and commands won't work.
This commit is contained in:
parent
bc8976590d
commit
09674aa86b
|
@ -7,6 +7,9 @@ from naff import (
|
||||||
listen,
|
listen,
|
||||||
slash_command,
|
slash_command,
|
||||||
InteractionContext,
|
InteractionContext,
|
||||||
|
AuditLogEventType,
|
||||||
|
AuditLogEntry,
|
||||||
|
RoleSelectMenu,
|
||||||
)
|
)
|
||||||
from naff.api import events
|
from naff.api import events
|
||||||
from naff.models.discord.embed import (
|
from naff.models.discord.embed import (
|
||||||
|
@ -19,13 +22,13 @@ from naff.models.discord.embed import (
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from database import GuildSettings as GuildSettingsModel, JoinLeave
|
from database import GuildSettings as GuildSettingsModel, JoinLeave
|
||||||
|
|
||||||
bot = Client(intents=Intents.ALL, debug_scope=387153131378835456)
|
class HeimdallrClient(Client):
|
||||||
|
@listen()
|
||||||
|
async def on_ready(self):
|
||||||
@listen()
|
print("------------------------------------")
|
||||||
async def on_ready():
|
|
||||||
print(f"Bot '{bot.user.username}' is ready!")
|
print(f"Bot '{bot.user.username}' is ready!")
|
||||||
print(f"This bot is owned by {bot.owner}")
|
print(f"This bot is owned by {bot.owner}")
|
||||||
|
print("------------------------------------")
|
||||||
|
|
||||||
for guild in bot.guilds:
|
for guild in bot.guilds:
|
||||||
guild_q = GuildSettingsModel.get_or_none(GuildSettingsModel.guild_id == guild.id)
|
guild_q = GuildSettingsModel.get_or_none(GuildSettingsModel.guild_id == guild.id)
|
||||||
|
@ -34,13 +37,8 @@ async def on_ready():
|
||||||
guild_q.save()
|
guild_q.save()
|
||||||
|
|
||||||
|
|
||||||
|
@listen(events.MemberAdd)
|
||||||
# @listen()
|
async def on_member_join(self, event: events.MemberAdd):
|
||||||
# async def on_message_create(event: MessageCreate):
|
|
||||||
# print(f"{event.message.author.username}: {event.message.content}")
|
|
||||||
|
|
||||||
@listen(events.MemberAdd)
|
|
||||||
async def on_member_join(event: events.MemberAdd):
|
|
||||||
joinleave_q: JoinLeave
|
joinleave_q: JoinLeave
|
||||||
joinleave_q, _ = JoinLeave.get_or_create(guild_id=event.guild.id)
|
joinleave_q, _ = JoinLeave.get_or_create(guild_id=event.guild.id)
|
||||||
|
|
||||||
|
@ -59,11 +57,29 @@ async def on_member_join(event: events.MemberAdd):
|
||||||
|
|
||||||
await channel.send(str(joinleave_q.join_message).format(member=event.member, guild=event.guild))
|
await channel.send(str(joinleave_q.join_message).format(member=event.member, guild=event.guild))
|
||||||
|
|
||||||
@listen(events.MemberRemove)
|
@listen(events.MemberRemove)
|
||||||
async def on_member_leave(event: events.MemberRemove):
|
async def on_member_leave(self, event: events.MemberRemove):
|
||||||
joinleave_q: JoinLeave
|
joinleave_q: JoinLeave
|
||||||
joinleave_q, _ = JoinLeave.get_or_create(guild_id=event.guild.id)
|
joinleave_q, _ = JoinLeave.get_or_create(guild_id=event.guild.id)
|
||||||
|
|
||||||
|
guildsettings_q: GuildSettingsModel
|
||||||
|
guildsettings_q, _ = GuildSettingsModel.get_or_create(guild_id=event.guild.id)
|
||||||
|
|
||||||
|
entry: AuditLogEntry
|
||||||
|
async for entry in event.guild.audit_log_history(
|
||||||
|
action_type=AuditLogEventType.MEMBER_KICK,
|
||||||
|
limit=10
|
||||||
|
):
|
||||||
|
if (entry.target_id != event.member.id or
|
||||||
|
guildsettings_q.admin_channel is None):
|
||||||
|
continue
|
||||||
|
|
||||||
|
channel = await bot.fetch_channel(guildsettings_q.admin_channel)
|
||||||
|
await channel.send(f"{event.member.mention} was kicked with reason: {entry.reason}")
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if joinleave_q.message_channel is None:
|
if joinleave_q.message_channel is None:
|
||||||
return
|
return
|
||||||
channel = await bot.fetch_channel(joinleave_q.message_channel)
|
channel = await bot.fetch_channel(joinleave_q.message_channel)
|
||||||
|
@ -81,14 +97,16 @@ async def on_member_leave(event: events.MemberRemove):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@slash_command(name="ping", description="Ping the bot")
|
@slash_command(name="ping", description="Ping the bot")
|
||||||
async def ping_command(ctx: InteractionContext):
|
async def ping_command(self, ctx: InteractionContext):
|
||||||
ctx.ephemeral = True
|
ctx.ephemeral = True
|
||||||
await ctx.send("Pong!")
|
await ctx.send("Pong!",
|
||||||
|
components=RoleSelectMenu(placeholder="HONK")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@slash_command(name="bot-info", description="Get info about the bot")
|
@slash_command(name="bot-info", description="Get info about the bot")
|
||||||
async def bot_info_command(ctx: InteractionContext):
|
async def bot_info_command(self, ctx: InteractionContext):
|
||||||
await ctx.send(
|
await ctx.send(
|
||||||
ephemeral=True,
|
ephemeral=True,
|
||||||
embed=Embed(
|
embed=Embed(
|
||||||
|
@ -118,6 +136,14 @@ async def bot_info_command(ctx: InteractionContext):
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
bot = HeimdallrClient(intents=Intents.ALL, debug_scope=387153131378835456,
|
||||||
|
sync_interactions=True,
|
||||||
|
fetch_members=True,
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def set_loglevel(level: str):
|
def set_loglevel(level: str):
|
||||||
loglevel = logging.WARNING
|
loglevel = logging.WARNING
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue