复现方式:

  1. 监听 unreadmessages 事件
  2. 通过 conv.queryMessages 方法获取聊天记录,不管是传入 beforeMessageId 还是 afterMessageId,都没法拿到 payload.lastMessageId 这条消息。

示例代码如下:

client.on('unreadmessages', async (payload, conv) => {
  let messages

  messages = await conv.queryMessages({
    beforeTime: payload.lastMessageTimestamp,
    beforeMessageId: payload.lastMessageId,
    limit: payload.count,
  })

  for (const msg of messages) {
    console.log('Message ID:', msg.id, 'Timestamp:', msg.timestamp)

    if (msg.id === payload.lastMessageId) {
      // will never reach here
      console.log('GOT YOU!')
    }
  }


  messages = await conv.queryMessages({
    afterTime: payload.lastMessageTimestamp,
    afterMessageId: payload.lastMessageId,
    limit: 2,
  })
  
  for (const msg of messages) {
    console.log('Message ID:', msg.id, 'Timestamp:', msg.timestamp)

    if (msg.id === payload.lastMessageId) {
      // will never reach here
      console.log('GOT YOU!')
    }
  }
})