You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Discord机器人add_reaction计入投票初始计数?

解决Discord机器人投票初始计数不为0的问题

你可以通过排除机器人自身的反应来得到正确的投票数,以下是两种实用方法:

方法一:直接对反应计数减1

因为每个表情都是机器人主动添加的,所以每个表情的初始count值都是1(对应机器人自己的反应),统计有效票数时直接用count - 1即可:

# 后续统计票数的示例代码
async def get_poll_results(poll_message):
    yes_votes = 0
    no_votes = 0
    for reaction in poll_message.reactions:
        if reaction.emoji == "✅":
            yes_votes = reaction.count - 1
        elif reaction.emoji == "❌":
            no_votes = reaction.count - 1
    print(f"同意:{yes_votes} 票,反对:{no_votes} 票")

方法二:过滤掉机器人的用户反应

如果担心出现机器人重复添加反应的特殊情况,可以遍历反应对应的用户列表,主动排除机器人自身:

# 后续统计票数的示例代码
async def get_poll_results(poll_message):
    bot_user = poll_message.guild.me  # 获取当前机器人在服务器中的用户对象
    yes_votes = 0
    no_votes = 0
    
    for reaction in poll_message.reactions:
        if reaction.emoji == "✅":
            async for user in reaction.users():
                if user != bot_user:
                    yes_votes += 1
        elif reaction.emoji == "❌":
            async for user in reaction.users():
                if user != bot_user:
                    no_votes += 1
    print(f"同意:{yes_votes} 票,反对:{no_votes} 票")

内容的提问来源于stack exchange,提问作者user2494337

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:01:12