Node.js实现Telegram私有频道消息抓取并忽略回复消息
过滤Telegram频道回复消息的解决方案
要忽略频道里的回复消息,只需要在过滤条件里加个判断,排除带回复标记的消息就行。在MTProto的消息结构里,回复消息会带有reply_to字段,所以我们可以通过检查这个字段是否存在来过滤掉回复。
另外你代码里还有个语法错误:filter的箭头函数没闭合括号,这会导致代码跑不起来,得一起修好。
修改后的代码如下:
const { api } = require('./mtproto'); function startListener() { console.log('[+] starting listener'); const newChannelMessages = []; api.mtproto.updates.on('updates', ({ updates }) => { const filteredMessages = updates .filter((update) => update._ === 'updateNewChannelMessage' && update.message.peer_id.channel_id == '12345678' && // 排除回复消息 !update.message.reply_to && update.message.message.startsWith('$') && !update.message.message.split(' ').some(word => ['T1', 'T2', 'T3', 'T4', 'T5', 'T6'].includes(word)) ) // 修复:补充filter的闭合括号 .map(({ message }) => message); newChannelMessages.push(...filteredMessages); for (const message of filteredMessages) { console.log(message.message); } }); return newChannelMessages; } module.exports = { startListener, };
关键修改点
- 过滤回复消息:添加
!update.message.reply_to判断,只有当消息没有reply_to字段时,才会被保留(即非回复消息)。 - 修复语法错误:给
filter的箭头函数补充了缺失的闭合括号,保证代码正常执行。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

