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
相关产品推荐
相关产品推荐

