我正在使用discord.py制作我的discord机器人,当有人键入一条消息时,我想检查用户是否说foo#3645,然后如果不是,则执行某些操作,然后执行其他操作
if(messageAuthor == "foo#3645):
# do something
else:
# do something else
我尝试过:
if(ctx.message.author == "foo#3465"):
# do something
但是由于某些原因,它不起作用...
如果您需要更多信息,请发表评论。
答案 0 :(得分:3)
如果您希望进行可靠的检查,请检查用户ID:
if author.id == "170733454822341405":
#do something
答案 1 :(得分:1)
str
(包括User
)的Member
表示将是其用户名(而不是其服务器特定的昵称)和鉴别符(用于告诉具有相同含义的人用户名除外)。
if str(ctx.message.author) == "foo#3465":
...
也就是说,您应该对照id
进行检查,因为一个人可以更改其Discord用户名。 id
是discord.py的异步分支中的字符串,而discord.py-rewrite中的整数是
答案 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。