我一直在尝试制作一个发送消息的 DM 命令,并由作者提供。
但是,我一直收到此错误:TypeError: send() takes from 1 to 2 positional arguments but 3 were given
这是我现在拥有的代码:
@client.command()
async def sendadm(ctx, user: discord.User, *, message=None):
if ctx.message.author.id == owner_discord_id:
message = message or ""
await user.send(message)
else:
await user.send(message, "\n\nSent by {ctx.author}")
答案 0 :(得分:0)
请注意,User.send()
方法是一个实例方法,因此 self
将被隐式传递,因此您的错误提示给出了 3 个位置参数。 (第一个位置参数是 self
。可选的第二个位置参数是 content
。)主要问题是您试图将两个不同的值传递给位置参数 content
。>
您似乎正在尝试组合消息字符串和 "\n\nSent by {ctx.author}"
,因此请参阅下面的“更正”代码。
@client.command()
async def sendadm(ctx, user: discord.User, *, message=None):
if ctx.message.author.id == owner_discord_id:
message = message or ""
await user.send(message)
else:
await user.send(f"{message}\n\nSent by {ctx.author}")