message.reaction.count 不和谐 py
message.reaction.count Discord py
我正在尝试制作一个简单的机器人,它只会对带附件的消息做出反应。然后在一定时间后,如果它有 2 个或更多反应,它会对消息进行 link 并将其发送到审核频道。
@client.event
async def on_message(message):
if message.channel.id == 828579458167996420:
if message.attachments or "http" in message.content:
msgID = message.id
await message.add_reaction("<:uut:828580756384120912>")
await asyncio.sleep(200)
x = int
if message.reactions.count(x) >= 3:
link = 'https://discord.com/channels/11223345678900/828579458167996420/' + str(msgID)
channel = client.get_channel(892065611876823100)
x = x - 1
await channel.send("this post " + str(link) + "is liked " + str(x) + "times." )
机器人对我想要的消息做出反应,但它post在审核频道中没有任何反应
我是初学者,代码乱七八糟:\
如果您没有收到任何类型的错误,问题就出在这里,永远不会触发 if 语句:
x = int
if message.reactions.count(x) >= 3:
message.reactions
将 return 一个列表,您的语句将计算 x
在该列表中的次数(始终为零)。
您想要做的只是获取该列表的总长度,如下所示:
if len(message.reactions) >= 3:
还有其他小改进提示:您可以通过 message.jump_url
获取消息的 URL
编辑:
抱歉,要获得反应计数,您实际上需要做的是搜索要计数的表情符号,或者快捷方式是只获得该列表中的第一个反应,因为您的机器人 应该 是第一个对该消息做出反应的人:
#this will return a list of reactions that match the emoji you want
emoji = [x for x in message.reactions if str(x.emoji) == ''] #replace the emoji with the one you want
print(emoji[0].count) #counts the first (and only) emoji in the new list
“捷径”版,只获取第一反应数:
print(message.reactions[0].count)
我正在尝试制作一个简单的机器人,它只会对带附件的消息做出反应。然后在一定时间后,如果它有 2 个或更多反应,它会对消息进行 link 并将其发送到审核频道。
@client.event
async def on_message(message):
if message.channel.id == 828579458167996420:
if message.attachments or "http" in message.content:
msgID = message.id
await message.add_reaction("<:uut:828580756384120912>")
await asyncio.sleep(200)
x = int
if message.reactions.count(x) >= 3:
link = 'https://discord.com/channels/11223345678900/828579458167996420/' + str(msgID)
channel = client.get_channel(892065611876823100)
x = x - 1
await channel.send("this post " + str(link) + "is liked " + str(x) + "times." )
机器人对我想要的消息做出反应,但它post在审核频道中没有任何反应
我是初学者,代码乱七八糟:\
如果您没有收到任何类型的错误,问题就出在这里,永远不会触发 if 语句:
x = int
if message.reactions.count(x) >= 3:
message.reactions
将 return 一个列表,您的语句将计算 x
在该列表中的次数(始终为零)。
您想要做的只是获取该列表的总长度,如下所示:
if len(message.reactions) >= 3:
还有其他小改进提示:您可以通过 message.jump_url
编辑:
抱歉,要获得反应计数,您实际上需要做的是搜索要计数的表情符号,或者快捷方式是只获得该列表中的第一个反应,因为您的机器人 应该 是第一个对该消息做出反应的人:
#this will return a list of reactions that match the emoji you want
emoji = [x for x in message.reactions if str(x.emoji) == ''] #replace the emoji with the one you want
print(emoji[0].count) #counts the first (and only) emoji in the new list
“捷径”版,只获取第一反应数:
print(message.reactions[0].count)