我可以让该漫游器完美删除垃圾邮件,但无法阻止违规计数超过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)并出现相同的错误。
答案 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)
无效相同。