如何获取特定频道 discordjs 的最后一条消息

Posted

技术标签:

【中文标题】如何获取特定频道 discordjs 的最后一条消息【英文标题】:How to get the last message of a specific channel discordjs 【发布时间】:2019-12-28 11:47:50 【问题描述】:

我正在尝试获取特定频道的最后一条消息,但我做不到,我希望如果我在另一个频道(频道 1)中编写命令,该命令会给我另一个频道的最后一条消息频道(频道 2)。

我的代码是:

client.on('message', (message)=>
    if(message.channel.id === '613553889433747477')
        if(message.content.startsWith('start'))

                message.channel.fetchMessages( limit: 1 ).then(messages => 
                    let lastMessage = messages.first();
                    console.log(lastMessage.content);
                  )
                  .catch(console.error);
        
    
    );

【问题讨论】:

message.channel.id是频道2的id吗? 是的。这是频道 2 的 id 所以它显示任何错误或只是卡住了?它通过了你所有的 if 语句? 我卡住了,在控制台中它没有显示任何错误 【参考方案1】:

我稍微清理了你的代码,并添加了一些 cmets 来解释正在发生的事情。 如果您有更多问题,我建议您访问 Discord.js 官方 Discord 服务器。https://discord.gg/bRCvFy9

client.on('message', message => 

  // Check if the message was sent in the channel with the specified id.
  // NOTE, this defines the message variable that is going to be used later.
  if(message.channel.id === '613553889433747477')
    if(message.content.startsWith('start')) 

      // Becuase the message varibable still refers to the command message,
      // this method will fetch the last message sent in the same channel as the command message.
      message.channel.fetchMessages( limit: 1 ).then(messages => 
        const lastMessage = messages.first()
        console.log(lastMessage.content)
      ).catch(err => 
        console.error(err)
      )
    
  
)

如果您想从其他频道获取消息,可以执行以下操作。 并使用命令start #channel

client.on('message', message => 

  // Check if the message was sent in the channel with the specified id.
  if(message.channel.id === '613553889433747477')
    if(message.content.startsWith('start')) 

      // Get the channel to fetch the message from.
      const channelToCheck = message.mentions.channels.first()

      // Fetch the last message from the mentioned channel.
      channelToCheck.fetchMessages( limit: 1 ).then(messages => 
        const lastMessage = messages.first()
        console.log(lastMessage.content)
      ).catch(err => 
        console.error(err)
      )
    
  
)

可以在此处找到有关在消息中提及频道的更多信息。 https://discord.js.org/#/docs/main/stable/class/Message?scrollTo=mentions

【讨论】:

对不起,但是,在你给我的代码中,我可以在哪里添加频道#2 的 ID? " 抱歉来晚了,但是如果你想通过id指定频道,把这行const channelToCheck = message.mentions.channels.first()改成const channelToCheck = message.guild.channels.get('ID_OF_CHANNEL')

以上是关于如何获取特定频道 discordjs 的最后一条消息的主要内容,如果未能解决你的问题,请参考以下文章

如何找到特定用户 discordjs 的最后发送消息

如何查找机器人在特定频道中发送的消息? [discord.js]

如何使用 nodeJS 和 discordJS 更改 Discord 频道名称?

如何使用 YTDL 和 discordjs/voice 包流式传输音乐。不和谐JS

如何同时获取多个频道历史记录?

如何使用 xslt 获取与特定元素值匹配的最后一条记录?