Python:具有不同数量按钮的 Discord 按钮行

问题描述 投票:0回答:1

所以我目前正在尝试制作一个存档机器人,您可以在其中选择角色并获取有关它们的所有信息。我为每个角色使用了按钮。

现在我想对按钮行进行排序,以便每个房屋/属性都有自己的行。每个房子里都有不同数量的角色。最小 2 最大 4。

如何对行进行排序,以便每行只显示一个房子的字符按钮?目前,每行始终使用 5。 谢谢!

这是我到目前为止的代码:

async def archive(ctx):
characters = {
    "Name": {"dropdown": NameDropdown, "image": "", "emoji": ""},
    ...
}

embed = discord.Embed(
    title="",
    description="",
    color=COLOR
)

view = discord.ui.View(timeout=None)

for char_name, char_data in characters.items():
    button = discord.ui.Button(
        label=char_name,
        style=discord.ButtonStyle.secondary,
        emoji=char_data["emoji"],
        custom_id=f"character_{char_name}"
    )

    async def button_callback(interaction: discord.Interaction, char_name=char_name, char_data=char_data):
        char_dropdown = char_data["dropdown"]()
        embed = discord.Embed(
            title=f"{char_name}",
            description=f"",
            color=COLOR
        )
        embed.set_image(url=char_data["image"]) 
        await interaction.response.send_message(embed=embed, view=char_dropdown, ephemeral=True)

    button.callback = button_callback
    view.add_item(button)

await ctx.send(embed=embed, view=view)
await ctx.message.delete()

我尝试使用

discord.ui.ActionRow()
,但似乎我无法理解如何正确使用它,或者我的信息已过时。错误代码如:

“属性错误:模块‘discord.ui’没有属性‘ActionRow’”

结果出来了。

python button discord bots row
1个回答
0
投票

如果我正确理解您的问题,您可以通过使用 row

 对象中的 
discord.ui.Button
 属性
来实现此目的。这允许您将按钮分配给特定行。

这是一个关于其工作原理的简单示例:

view = discord.ui.View(timeout=None)

# Buttons for House 1 (Row 0)
button1 = discord.ui.Button(label="CharacterA", row=0)
button2 = discord.ui.Button(label="CharacterB", row=0)

# Buttons for House 2 (Row 1)
button3 = discord.ui.Button(label="CharacterC", row=1)
button4 = discord.ui.Button(label="CharacterD", row=1)

view.add_item(button1)
view.add_item(button2)
view.add_item(button3)
view.add_item(button4)

注意

row
属性是从零开始的,因此
row=0
是第一行,
row=1
是第二行,依此类推。

© www.soinside.com 2019 - 2024. All rights reserved.