有一个投票机器人。他开始投票,但他没有出来计算反应。这是它应该如何工作的示例:
一切正常,除了计算,没有人知道如何计算反应?我的非工作代码:
async def on_raw_reaction_add(self, payload):
channel = Bot.get_channel(payload.channel_id) # 获取通道对象
message = await channel.fetch_message(payload.message_id) # 获取消息对象
对于消息中的表情符号:
表情符号=有效载荷.emoji
如果表情符号 == '✅':
全局 Y
Y += 1
elif 表情符号 == '❌':
全局 N
N += 1
async def on_raw_reaction_remove(self, payload):
channel = Bot.get_channel(payload.channel_id) # 获取通道对象
message = await channel.fetch_message(payload.message_id) # 获取消息对象
对于消息中的表情符号:
emoji = payload.emoji # 用户反应
如果表情符号 == '✅':
全局 Y
Y -= 1
elif 表情符号 == '❌':
全局 N
N -= 1
如果 Y > N:
结果 = '接受'
elifY==N:
结果 = '拒绝(是 = 否)'
别的:
结果 = '拒绝'
@Bot.command(pass_context=True)
@commands.has_permissions(管理员=真)
异步def endvote(ctx):
emb = discord.Embed(title=f'投票结束。', description = 'Result: ' + str(Result), colour=discord.Color.purple())
message = await ctx.send(embed=emb) # 发送后返回消息
Y=0
N=0

您可以在类中创建一个变量
message_id并将投票消息的 id 存储在其中。接下来,找到这条消息并简单地从这条消息中获取反应的数量(不需要自己计算)。最小的例子:结果:
如果您只需要获取反应次数,则可以使用此方法(上面代码中的示例):
结果,我们得到了一个字典,其中反应的数量可以通过 emoji: 找到
reactions['✅']。