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

如何用node-telegram-bot读取Telegram群组指定用户消息及反应

node-telegram-bot 开发相关问题解答

1. 读取指定userId用户在群组内的所有消息(含最新消息)

不存在可直接传入userId就返回该用户全量群消息的机器人函数。
Telegram Bot API 本身未开放按用户维度全量回溯群历史消息的能力,机器人的消息获取边界如下:

  • 机器人只能获取加入群组之后产生的新消息,加入前的历史消息无权限直接全量拉取
  • 就算给机器人开通群管理员权限,也只能分页往前拉取最近的有限条数群消息,无法直接按userId过滤返回目标用户的所有发信记录

可行实现方案:

  • 机器人入群后持续监听所有群消息,按userId维度做本地持久化存储(生产环境用数据库,测试可以用内存Map),后续查询直接读本地存储即可,最新消息也能靠实时监听自动同步
  • 如果需要补拉机器人入群后、存储逻辑上线前的消息,可以分页调用拉取群历史的接口,本地过滤目标userId的消息后存入存储体系

node-telegram-bot 实时监听存消息的参考代码:

const TelegramBot = require('node-telegram-bot-api');
const bot = new TelegramBot('YOUR_BOT_TOKEN', { polling: true });
// 生产环境请替换为数据库存储
const userMsgStore = new Map();

bot.on('message', (msg) => {
  // 仅处理群组/超级群组消息
  if (!['group', 'supergroup'].includes(msg.chat.type)) return;
  const uid = msg.from.id;
  if (!userMsgStore.has(uid)) userMsgStore.set(uid, []);
  userMsgStore.get(uid).push({
    msgId: msg.message_id,
    chatId: msg.chat.id,
    content: msg.text || msg.caption || '[非文本类消息]',
    timestamp: msg.date
  });
});

// 查询指定用户的所有已存储消息
const queryUserMessages = (uid) => userMsgStore.get(uid) || [];

2. 读取特定消息对应的Reactions

支持,但有版本和权限要求:

  • 依赖的node-telegram-bot版本需要适配Telegram Bot API 6.6及以上版本(该版本首次开放消息反应相关能力)
  • 机器人需要是目标群组成员,且未被限制查看对应消息

两种获取方式:

  • 实时获取:监听message_reaction事件,群内任意消息的反应发生变更时,机器人会收到对应推送,包含触发变更的用户、变更前后的反应内容、关联消息ID等信息
  • 主动查询:传入chatId和messageId调用消息查询接口,返回的消息对象中会携带reactions字段,包含当前消息的所有反应类型、对应反应的添加人数、最近添加反应的用户列表;如果群组开启了匿名反应,或者机器人无查看群成员权限,仅能获取反应的统计数量,拿不到添加反应的具体用户信息

参考代码:

// 监听实时反应变更
bot.on('message_reaction', (update) => {
  const reactionInfo = {
    chatId: update.chat.id,
    msgId: update.message_id,
    operatorUid: update.user.id,
    addedReactions: update.new_reaction,
    removedReactions: update.old_reaction
  };
  // 自行处理反应变更逻辑
  console.log(reactionInfo);
});

// 主动查询指定消息的当前反应
async function getMsgReactions(chatId, msgId) {
  const msg = await bot.getMessage(chatId, msgId);
  return msg.reactions || [];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:57:20