使用discord.py的discord.ActionRow时为何报错?
解决discord.py中ActionRow初始化报错的问题
你的报错是因为discord.py 2.x版本对ActionRow的初始化方式做了调整,下面是具体的解决办法:
错误原因
- 直接用
discord.ActionRow(*buttons[0])传位置参数:ActionRow的构造函数仅接受self和关键字参数,你传入的3个按钮会被当成额外的位置参数,导致参数数量不匹配报错。 - 使用
components=buttons[0]:discord.py 2.x已经将组件列表的参数名从components改为children,旧参数名不再被支持。
解决方法
方法1:使用children关键字参数创建ActionRow
直接修改报错的代码片段为:
view.add_item(discord.ActionRow(children=buttons[0])) view.add_item(discord.ActionRow(children=buttons[1])) view.add_item(discord.ActionRow(children=buttons[2]))
方法2:逐个向ActionRow添加组件(更直观)
如果担心参数名混淆,可以先创建空的ActionRow,再逐个添加按钮:
# 处理第一行按钮 row1 = discord.ActionRow() for btn in buttons[0]: row1.add_item(btn) view.add_item(row1) # 处理第二行按钮 row2 = discord.ActionRow() for btn in buttons[1]: row2.add_item(btn) view.add_item(row2) # 处理第三行按钮 row3 = discord.ActionRow() for btn in buttons[2]: row3.add_item(btn) view.add_item(row3)
内容的提问来源于stack exchange,提问作者benz
相关产品推荐
相关产品推荐

