如何在Discord.js频道中获得用户的所有提及

时间:2019-06-03 20:25:23

标签: node.js bots discord.js

因此,我正在尝试创建一个简单的机器人,当用户编写该机器人时:

!howmanypoints {user}

它应该只转到特定频道,并搜索在特定频道中被提及的次数。

到目前为止,我遇到了fetchMentions()函数,但它似乎已被弃用,并且当机器人尝试执行此操作时,API不喜欢它。.

任何输入或至少是一种更好的方法。也许我对使其正常工作着迷。

const Discord = require('discord.js')
const client = new Discord.Client()


client.on('message', msg => {
  if (msg.content.includes('!howmanypoints') ||      msg.content.includes('!cuantospuntos')) {

    const canal_de_share = client.channels.find('name', 'dev')
    const id_user = client.user.id
    client.user.fetchMentions({guild: id_user })
    .then(console.log)
    .catch(console.error);
  }
})

1 个答案:

答案 0 :(得分:1)

ClientUser.fetchMentions()已过时,仅适用于用户帐户。

作为替代方案,您可以获取该频道的所有消息并遍历每个消息,检查是否有提及。

示例:

let mentions = 0;

const channel = client.channels.find(c => c.name === 'dev');
const userID = client.user.id;

channel.fetchMessages()
  .then(messages => {
    for (let message of messages) {
      if (message.mentions.users.get(userID)) mentions++;
    }

    console.log(mentions);
  })
  .catch(console.error);