所以我目前正在尝试制作一个存档机器人,您可以在其中选择角色并获取有关它们的所有信息。我为每个角色使用了按钮。
现在我想对按钮行进行排序,以便每个房屋/属性都有自己的行。每个房子里都有不同数量的角色。最小 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’”
结果出来了。
如果我正确理解您的问题,您可以通过使用 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
是第二行,依此类推。