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

discord.py如何获取对消息添加表情反应的用户ID

首先你当前获取反应用户列表的代码返回的users本身就是discord.User实例的集合,每个实例自带id属性可以直接提取,不需要额外调用bot.get_user重复拉取用户信息,修改后的实现如下:

1. 提取反应用户的ID列表

new_msg = await channel.fetch_message(id)
users = await new_msg.reactions[0].users().flatten()

# 移除机器人自身
if client.user in users:
    users.pop(users.index(client.user))
# 移除触发命令的操作者
if ctx.author in users:
    users.pop(users.index(ctx.author))

# 生成纯用户ID列表
user_id_list = [user.id for user in users]

2. 统计账号创建时间早于n天的用户数量

直接复用已经拿到的users对象即可,无需二次查询,效率更高:

from datetime import datetime, timedelta

# 自定义统计阈值n,单位为天
n = 30
# 计算n天前的UTC时间节点
cutoff = datetime.utcnow() - timedelta(days=n)

count = 0
for user in users:
    # 统一时区避免对比报错
    if user.created_at.replace(tzinfo=None) < cutoff:
        count += 1

await ctx.send(f"账号创建早于{n}天的用户数:{count}")

说明

  • 如果你确实需要通过ID单独查用户信息,直接遍历user_id_list传入bot.get_user即可
  • 时间对比注意统一用UTC时间,避免时区偏差导致统计错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:36:04