'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 1:[1]

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)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1