如何将消息集中到一个盒子里?因为听众可以为一篇文章返回多个

问题描述 投票:0回答:1

我使用 gramjs 库来访问 Telegram API。 例如,我在频道中发布了一篇新帖子,其中包含 2 张图片和一些描述, 但我收到的不是一条消息(包含完整信息):描述 + 照片以及另一张照片。

client.addEventHandler((event) => {
   console.log('new post')
}, new NewMessage({chats: [someId]}))

我从文档中发现这是正常的,为了将多条消息收集到一个中,他们使用参数ptsqtshttps://core.telegram.org/api/updates),在gramjs中有只有pts,信息量不大

我还发现你可以使用

new Album
,那么类似的消息将在数组中立即到达:

client.addEventHandler((event) => {
   console.log('new post')
}, new Album({chats: [someId]}))

但是,这没有任何带有一张照片或仅文本的消息。 我们可以同时使用这两个侦听器,但是两个侦听器都会收到带有专辑的这些消息,在这种情况下,需要以某种方式从 NewMessage 侦听器中过滤掉它们,否则每个侦听器将处理两次消息。

如何处理这个问题?监听器有什么解决办法吗?

附注我认为该选项是在接收事件时获取标识符,而不是读取消息,而是使用另一种将返回整个出版物的方法通过 ID 进入通道。

如上所述,我不知道如何处理频道中的内容更新

javascript telegram telegram-bot
1个回答
0
投票

好的,有答案了:

client.addEventHandler( async (event) => {
    const isSingleMessage = "message" in event && !event.message.groupedId;

    if (!isSingleMessage) {
      return;
    }

    console.log('message');
  }, new NewMessage({
    chats: [id],
  }));

client.addEventHandler( async (event) => {
    console.log('album');
  }, new Album({
    chats: [id],
  }))

主要区别在于分批到达的消息具有 groupId。

© www.soinside.com 2019 - 2024. All rights reserved.