【问题标题】:discord.py-rewrite Blacklist certain people from using the botdiscord.py-rewrite 黑名单某些人使用机器人
【发布时间】:2020-10-26 02:46:26
【问题描述】:

我正在制作一个类似于“Discord Deliver”和“Discord Byte”的机器人,人们可以在其中订购虚拟食物,并且我希望能够将某些人列入使用该机器人的黑名单。有没有办法做到这一点?对于我所有的命令,我使用@bot.command;我指定这一点,因为有些人使用on_message。抱歉,我没有尝试过任何东西,我对 discord.py-rewrite 比较陌生。

【问题讨论】:

    标签: python python-3.x discord discord.py discord.py-rewrite


    【解决方案1】:

    如果命令的作者姓名在该集合中,您可以创建一个包含其名称的集合并退出函数。

    blacklist = {'name1', 'name2', 'name3'}
    
    @bot.command()
    async def command(ctx):
        if ctx.author.name in blacklist:
            return
    
        # do rest of command
    

    in 使用集合而不是列表更好,因为查找时间是 O(1) 而不是 O(n)。

    【讨论】:

    • 我把用户名和标签放在那里吗? EX:DannyDevito#1234 还是用户 ID?
    • 这只是他们的用户名。如果您想使用他们的 ID,请使用 ctx.author.id,如果命令来自公会,您可以使用 ctx.author.nick 检查他们的昵称。 ctx.author.name 将保持不变,即使他们更改了公会的昵称。据我所知,discord.py 中没有使用标签。
    • 实际上,我强烈建议不要使用 ctx.author.name,而是使用 ctx.author.id,因为用户仍然可以更改姓名,但更改 ID 的唯一方法是创建一个新的帐户。 Here是如何获取人的ID。
    • 所以我对此进行了测试,但它不起作用。即使用户被列入黑名单,它仍然会执行其余的命令。我尝试了用户 ID 和名称/名称和标签,但它不起作用。
    • 尝试在 if 语句之前打印 ctx.author.name 并确保您只包括他们的名字而不是他们的标签。此外,当使用 ID 时,黑名单中的值必须是整数,因此请删除它们周围的引号。
    猜你喜欢
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 2021-06-30
    • 2021-07-17
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多