禁止某人时发送 dm discord.py

时间:2021-05-05 13:22:26

标签: python discord discord.py

我有一个 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'

问题是它也破坏了其余的代码......所以现在根本不起作用。

关于如何向被禁止的人发送电子邮件 的任何想法?

1 个答案:

答案 0 :(得分:1)

您必须删除 ctx 参数,因为在调用 on_message 时它不会被传递,并且使用 ctx.author.send() 代替 message.author.send()。如果您真的想在 ctx 中使用 on_message,因为您需要它用于您未在此处显示的代码的其他部分,因为它与问题无关,请添加 ctx = await bot.get_context(message)顶部 on_message


参考文献: