不和谐机器人不会@人



我一直在制作一个机器人,它将对消息做出反应的人添加到数组中,然后在达到目标后@数组中的每个人。我已经让它发送应该@每个人的信息,但它只是显示文本,而不是真正通知人们。"Names"是它收集的列表和send_out"应该格式化它。

@client.event
async def on_raw_reaction_add(payload):
if payload.message_id == messageid and payload.member.bot == False:
if str(payload.emoji.name) == "🦍":
name = str(payload.member.name + "#" + payload.member.discriminator)
global count
count += 1
global names
names.append(name)
print (names)
if (count == goal_actual):
print("Goal has been reached.")
channel = client.get_channel(channel_id)
await channel.send("We now have " + str(goal_actual) + " for " + game_actual + "!")
print(channel)
global send_out
for x in names:
send_out += ("@" + x +"  ")
await channel.send(send_out)
send_out = []
else:
print("Detected reaction from " + name + ". There are is now " , count ,  " people ready.")

最好使用payload提供给您的member对象

这里(discord.py docs)我们可以看到discord.on_raw_reaction_add(payload)给出了一个RawReactionActionEvent对象。

RawReactionActionEvent也有一个member对象,这是一个普通的成员对象,它有一个属性member.mention

你可以用这个来标记人物

@client.event
async def on_raw_reaction_add(payload):
if payload.message_id == messageid and payload.member.bot == False:
if str(payload.emoji.name) == "🦍":
global count
count += 1
global names
names.append(payload.member)
print (names)
if (count == goal_actual):
print("Goal has been reached.")
channel = client.get_channel(channel_id)
await channel.send("We now have " + str(goal_actual) + " for " + game_actual + "!")
print(channel)
global send_out
for member in names:
send_out += (member.mention)
await channel.send(send_out)
send_out = []
else:
print("Detected reaction from " + name + ". There are is now " , count ,  " people ready.")

最新更新