Hi,
I'm using buttons to trigger the discord kick, ban and timeout options but on every try it just retuns the User not Found message.
admin_action_embed = disnake.Embed(
title=f"User Warned - Admin Action Required",
description=f"User {user.mention} has received their third warning. Admins, please take action.",
color=disnake.Color.red()
)
action_row = disnake.ui.ActionRow(
disnake.ui.Button(
label="Kick",
style=disnake.ButtonStyle.danger,
custom_id=f"kick_{user.id}"
),
disnake.ui.Button(
label="Ban",
style=disnake.ButtonStyle.danger,
custom_id=f"ban_{user.id}"
),
disnake.ui.Button(
label="Timeout",
style=disnake.ButtonStyle.primary,
custom_id=f"timeout_{user.id}"
)
)
await admin_channel.send(embed=admin_action_embed, components=[action_row])
@commands.Cog.listener()
async def on_button_click(self, inter):
custom_id = inter.data['custom_id']
user_id = int(custom_id.split('_')[1])
if custom_id.startswith("kick_"):
user = inter.guild.get_member(user_id)
if user:
await user.kick()
else:
await inter.response.send_message("User not found or already kicked.", ephemeral=True)
elif custom_id.startswith("ban_"):
user = inter.guild.get_member(user_id)
if user:
await user.ban()
else:
await inter.response.send_message("User not found or already banned.", ephemeral=True)
elif custom_id.startswith("timeout_"):
user = inter.guild.get_member(user_id)
if user:
await user.timeout()
else:
await inter.response.send_message("User not found.", ephemeral=True)
I feel like I'm not calling the discord user_id correctly which causes it to fail.
I was hoping someone could spot the issue, thanks.
