Search code examples
pythondiscorddiscord.py

Cant send discord button


I get no errors or anything. Using newest version of discord.py v2.

@client.command(aliases = ["Rock Paper Scissors", "RPS", "Rockpaperscissors", "rockpaperscissors"])
async def check(ctx):
    buttonchoosebot = discord.ui.Button(style = discord.ButtonStyle.primary, label="Play bot")
    buttonchoosemember = discord.ui.Button(style = discord.ButtonStyle.primary, label="Play member")
    await ctx.send("Would you like to play against a bot or a member?", components=[[buttonchoosebot, buttonchoosemember]])

EDIT: I switched to nextcord to make things a whole lot easier.

from nextcord.ext import commands
import nextcord

Just replace all "discord" commands with "nextcord" ones. The new command using nextcord would look like this:

@client.command()
async def check(ctx):
    buttonchoosebot  = nextcord.ui.Button(style = nextcord.ButtonStyle.primary, label="Play bot")
    buttonchoosemember = nextcord.ui.Button(style = nextcord.ButtonStyle.primary, label="Play member")
    buttons_view = nextcord.ui.View()
    buttons_view.add_item(buttonchoosebot)
    buttons_view.add_item(buttonchoosemember)
    await ctx.send("Test", view=buttons_view)

Thanks for all the answers!


Solution

  • In discord.py you need to define a view to use UI components.

    This is for message commands:

    @client.command()
    async def check(ctx):
        buttonchoosebot  = discord.ui.Button(style = discord.ButtonStyle.primary, label="Play bot")
        buttonchoosemember = discord.ui.Button(style = discord.ButtonStyle.primary, label="Play member")
        buttons_view = discord.ui.View()
        buttons_view.add_item(buttonchoosebot)
        buttons_view.add_item(buttonchoosemember)
        await ctx.send("Test", view=buttons_view)
    

    This is for slash commands:

    @client.tree.command(name='check', guild = discord.Object(id=658947832392187906))
    async def help(interaction: discord.Interaction):
        buttonchoosebot  = discord.ui.Button(style = discord.ButtonStyle.primary, label="Play bot")
        buttonchoosemember = discord.ui.Button(style = discord.ButtonStyle.primary, label="Play member")
        buttons_view = discord.ui.View()
        buttons_view.add_item(buttonchoosebot)
        buttons_view.add_item(buttonchoosemember)
        await interaction.response.send_message("Test", view=buttons_view)