我有一个 Discord 垃圾邮件踢人机器人,我想在您被禁止时发送私人消息。我试过这个:
@bot.event
async def on_message(message, ctx):
counter = 0
with open("spam_detect.txt", "r+") as file:
for lines in file:
if lines.strip("\n") == str(message.author.id):
counter += 1
file.writelines(f"{str(message.author.id)}\n")
if counter > 4 and not message.author.guild_permissions.administrator:
await message.guild.ban(message.author, reason="Spammer")
await message.channel.send(f"{message.author} kicked for spam.")
***ctx.author.send(message.author, "You were kicked for spam. You can rejoin in`60`seconds")***
await asyncio.sleep(30)
await message.guild.unban(message.author)
print(f"{message.author} kicked for spam.")
但它不起作用TypeError: on_message() missing 1 required positional argument: 'ctx'
问题是它也破坏了其余的代码......所以现在根本不起作用。
关于如何向被禁止的人发送电子邮件 的任何想法?
答案 0 :(得分:1)
您必须删除 ctx
参数,因为在调用 on_message
时它不会被传递,并且使用 ctx.author.send()
代替 message.author.send()
。如果您真的想在 ctx
中使用 on_message
,因为您需要它用于您未在此处显示的代码的其他部分,因为它与问题无关,请添加 ctx = await bot.get_context(message)
顶部 on_message
参考文献: