如何检查消息是否由某些用户discord.py发送

时间:2018-09-06 14:56:16

标签: python discord.py

我正在使用discord.py制作我的discord机器人,当有人键入一条消息时,我想检查用户是否说foo#3645,然后如果不是,则执行某些操作,然后执行其他操作

if(messageAuthor == "foo#3645):
    # do something
else:
    # do something else

我尝试过:

if(ctx.message.author == "foo#3465"):
    # do something

但是由于某些原因,它不起作用...

如果您需要更多信息,请发表评论。

4 个答案:

答案 0 :(得分:3)

如果您希望进行可靠的检查,请检查用户ID:

if author.id == "170733454822341405":
   #do something

答案 1 :(得分:1)

str(包括User)的Member表示将是其用户名(而不是其服务器特定的昵称)和鉴别符(用于告诉具有相同含义的人用户名除外)。

if str(ctx.message.author) == "foo#3465":
    ...

也就是说,您应该对照id进行检查,因为一个人可以更改其Discord用户名。 id的异步分支中的字符串,而中的整数是

答案 2 :(得分:1)

在我看来,您正在尝试将“作者”的实例与名称和区分符进行比较。您需要做的是: 1)找到名称为“ foo#3465”的成员,并将其与ctx.message.author或“ messageAuthor”进行比较

member = discord.utils.get(message.guild.members, name='Foo')
if member == messageAuthor:
   #do something
else:
   #do something else

或者,您可以: 2)比较messageAuthor.name与“ foo”或str(messageAuthor)与“ foo#3465”

答案 3 :(得分:0)

检查用户ID是最好的选择。根据{{​​3}},User.id是一个整数,而不是字符串,因此接受的答案可能无效。 message.author的类型为User

这对我有用:

if message.author.id = 170733454822341405:
    #do something

要手动获取某人的用户ID,请在不一致的情况下启用开发人员模式(用户设置->外观->高级),然后右键单击任意位置的用户,然后单击副本ID。