创建按钮角色 |类型错误: button_callback() 缺少 1 个必需的位置参数: 'member' |Discord.py/Pycord



我正试图为我的Discord服务器制作按钮角色,但在制作过程中遇到了一个错误。

代码:

@client.command()
async def test(ctx):
button= Button(label= "Click Below", style= discord.ButtonStyle.green, emoji= "<a:Tada:944187121495863327>")
async def button_callback(interaction, member: discord.Member):
role = discord.utils.get(ctx.guild.roles, id = 944152100823261205) 
member.id= interaction.user.id
await member.add_role(role)

button.callback= button_callback
view= View(button)
await ctx.send("React", view=view)

终端输出:

忽略项目视图中的异常<按钮样式=<按钮样式成功:3>url=None disabled=Falselabel='单击下方'表情符号=行=无>:追溯(最近一次通话(:
文件"C: \Users\USER\AppData\Local\Programs\Python38\lib\site packages\discord\ui\view.py";,第371行,在_scheduled_task中等待项。回调(交互(类型错误:button_callback((缺少1个必需的位置参数:"member">

在过去的两天里,我一直在努力解决这个问题,非常感谢您的帮助:(

说明

您收到错误是因为您试图向回调添加参数,而当discord调用它时,它没有传递member

按钮回调只传递一个参数:与其关联的Interaction。您可以通过Interaction.user访问该成员。

代码

@client.command()
async def test(ctx: commands.Context):
button = Button(label="Click Below", style=discord.ButtonStyle.green, emoji="<a:Tada:944187121495863327>")
async def button_callback(interaction: discord.Interaction):
role = ctx.guild.get_role(944152100823261205)
member = ctx.guild.get_member(interaction.user.id)
await member.add_roles(role)
button.callback = button_callback
view = View(button)
await ctx.send("React", view=view)

参考

Interaction.user

Button.callback

最新更新