试图让我的漫游器将具有垃圾邮件且违反次数超过3次的成员踢出去

时间:2019-08-04 07:12:25

标签: bots discord python-3.7

我可以让该漫游器完美删除垃圾邮件,但无法阻止违规计数超过3的成员。

if message.author.name in logs:            
       if message.author.name in users is True:
           return
       else:
           delta = message.created_at-logs[message.author.name].lastMessage
           if(delta.seconds < timeout):
               logs[message.author.name].violations += 1
               await message.delete()
               print("Spam Detected!")
               print("In Channel:", message.channel)
               print("Spammer:", message.author.name)
               print("Message: " + message.clean_content)
               print("Time Deleted:", str(datetime.datetime.now()), "\n")
               name = message.author.name
               if name in logs:
                   log = logs[name]
                   if log.violations > 3:
                       await discord.Member.kick(reason=None)
       logs[message.author.name].lastMessage = message.created_at

else:
       logs[message.author.name] = Log(message.created_at)    

await discord.Member.kick(reason = None)引发TypeError错误:kick()缺少1个必需的位置参数:'self'。

我也尝试过使用await discord.Guild.kick(user = user,reason = None)并出现相同的错误。

1 个答案:

答案 0 :(得分:0)

尝试做await message.guild.kick(message.author)
(请注意,如果该消息不是在公会中发送的,则会产生错误)

基本上,它提取了通过message.Guild发送消息的行会,并踢了发送消息的人(message.author)。

discord.Member.kick(reason=None)不起作用的原因是因为discord.Member是一种类型,而不是对象。
message.author应该是正确的方法。

(考虑到有很多成员不和谐,它说“获取此消息的作者”,而不是说“获取此不和谐的成员”,这样会更有意义)

以下原因与discord.Guild.kick(user=user, reason=None)无效相同。