如果作者没有某些角色,如何制作一个删除带附件的邮件的discord bot

时间:2018-05-02 17:56:08

标签: python discord

基本上就像问题一样。我想创建一个机器人,如果消息的作者在我的服务器中没有机器人或可信任的角色,它将删除带有附件的消息。

目前我有这个:

 **if message.attachments:
       if not "*roleID*" or "roleID" in [role.id for role in message.author.roles]:
           await client.delete_message(message)
           await client.send_message(message.channel, "Sorry mate only trusted members or bots can attach things to prevent spam")**

1 个答案:

答案 0 :(得分:1)

在不知道您的完整代码的情况下,此代码段似乎接近实现您想要执行的操作,它只是第二个if条件格式错误并导致问题。

假设您将*roleID*roleID替换为相应的机器人和受信任角色ID,*roleID*将始终返回True,无论您将哪些内容添加到字符串中,因为它不是空的。此时or的任何内容都被忽略了,if语句将始终返回True,删除任何通过此代码的消息。

另外需要注意的是,您应该使用您为roleID个检查而不仅仅是一个检查所做的列表理解,因此您必须将其保存到变量中。

尝试查看以下内容是否有效:

if len(message.attachments) > 0:
    author_roles = [role.id for role in message.author.roles]
    # replace both botRoleId and trustedRoleID with the respective IDs (as strings, because role.id is a string as well)
    if "botRoleID" not in author_roles or "trustedRoleID" not in author_roles:
        await client.delete_message(message)
        await client.send_message(message.channel, "Sorry mate only trusted members or bots can attach things to prevent spam")

我希望我能帮忙!