Python discord.py-重写黑名单,禁止某些人使用机器人

Python discord.py-重写黑名单,禁止某些人使用机器人,python,python-3.x,discord,discord.py,discord.py-rewrite,Python,Python 3.x,Discord,Discord.py,Discord.py Rewrite,我正在制作一个类似于“Discord Deliver”和“Discord Byte”的机器人,人们可以在其中订购虚拟食品,我希望能够将某些使用该机器人的人列入黑名单。有没有办法做到这一点?对于我所有的命令,我都使用@bot.command;我指定这一点是因为有些人在消息上使用。很抱歉,我没有尝试过的任何内容,我对discord.py rewrite比较陌生。您可以创建一个包含其名称的集合,如果该集合中有命令作者的姓名,则退出该函数 blacklist = {'name1', 'name2', '

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

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

blacklist = {'name1', 'name2', 'name3'}

@bot.command()
async def command(ctx):
    if ctx.author.name in blacklist:
        return

    # do rest of command

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

我是否将用户名和标记放在那里?例如:DannyDevito#1234或用户ID?这只是他们的用户名。如果您想使用他们的ID,请使用ctx.author.ID,如果命令来自公会,您可以使用ctx.author.nick检查他们的昵称。ctx.author.name将保持不变,即使他们更改了公会的昵称。据我所知,discord.py中没有使用标记。事实上,我强烈建议使用ctx.author.name,而不是ctx.author.id,因为用户仍然可以更改其名称,但更改其id的唯一方法是创建一个新帐户。是如何获得人们的身份证。所以我测试了这个,但它不起作用。即使用户被列入黑名单,它仍然执行命令的其余部分。我尝试了用户ID、名称/名称和标记,但无效。请尝试在if语句之前打印ctx.author.name,并确保只包含他们的名称,而不包含他们的标记。此外,当使用IDs时,黑名单中的值必须是整数,因此请删除它们周围的引号。