How can I have different interactions response on different buttons in pycord/discord.py.
Code:
@client.command()
async def test(ctx: commands.Context):
button = Button(label="Click Below", custom_id="freefire",style=discord.ButtonStyle.green, emoji="<:freefire:944183849779335198>")
button1 = Button(label="Click Below", custom_id="bgmi",style=discord.ButtonStyle.green, emoji="<:bgmi:944184219528208384>")
async def free_fire(interaction: discord.Interaction):
role = ctx.guild.get_role(944152201784336414)
member = ctx.guild.get_member(interaction.user.id)
if role in interaction.user.roles and interaction.custom_id== "freefire":
await interaction.user.remove_roles(role)
await interaction.response.send_message(f"{role} role has been taken from you", ephemeral=True)
else:
await member.add_roles(role)
await interaction.response.send_message(f"{role} role has been given to you", ephemeral=True)
button.callback = free_fire
async def bgmi(interaction: discord.Interaction):
role = ctx.guild.get_role(944152314200088667)
member = ctx.guild.get_member(interaction.user.id)
if role in interaction.user.roles and interaction.custom_id== "bgmi":
await interaction.user.remove_roles(role)
await interaction.response.send_message(f"{role} role has been taken from you", ephemeral=True)
else:
await member.add_roles(role)
await interaction.response.send_message(f"{role} role has been given to you", ephemeral=True)
button.callback = bgmi
It simply gives the role of last button when I click the first button and other buttons do not respond at all there is no error in console or anywhere.
The problem is that you first set button.callback
to free_fire
, but then you set button.callback
to bgmi
. This can be solved by changing the second button.callback = ...
to button1.callback = ...