提及带有message.mentions.channels的频道

时间:2018-02-04 04:21:25

标签: javascript node.js discord discord.js

所以我只需要一些关于如何在discord.js上做一件事的帮助。

我对如何使用message.mentions.channels感到困惑,而文档没有帮助。

我只需要一个console.log频道提到的命令(如#annoucements)。如何混淆。我的代码现在是

if (args.join(" ").mentions.channels = true) {
    console.log(args.join(" ").mentions.channels)

这是使用-!setWelcome #announcements的命令。 args取消前缀/命令并离开#announcements

但它会返回Cannot set property 'channels' of undefined.

如何简单?我很困惑。

如何使用-!setWelcome #announcements日志#announcements

(我还在学习,请原谅javascript缺乏技巧)

2 个答案:

答案 0 :(得分:0)

首先,你的if语句需要2或3个=字符来检查args.join(" ").mentions.channel是否等于true。像这样:

if (args.join(" ").mentions.channels === true) {
    // ... the rest of your code

其次,有几种方法可以控制记录消息中的所有频道提及。这有两种方法可以做到:

方法1:记录包含所有频道的Collection。这很有用,但在console中可能会非常有用,因为Collection在其中包含许多属性和函数。

function logMentionChannels(message) {
    let channels = message.mentions.channels;

    console.log(channels);
}

方法2:使用...channels.map()仅将所需的频道属性拉出到对象中。

function logMentionChannels(message) {
    let myChannels = channels.map(channel => new Object({
        'id': channel.id,
        'name': channel.name
    }));

    console.log(myChannels);
}

如果您需要其他方式循环播放频道,请参阅Collection

上的文档

答案 1 :(得分:0)

v12 提及

这可能对你有帮助! 试试这个:

client.on('message', async message => {
  let channel = message.mentions.channels.first();
  console.log(`#${channel.name}`);
});