Bot回复消息作者

时间:2017-02-21 02:59:21

标签: node.js discord discord.js

我已经创建了自己的Node.js bot,可以在我的不和谐服务器上工作。

我的机器人名为mybot

我已经看到了许多响​​应传入消息的例子 - 它们看起来像这样(并且工作正常)。

chatroom.on('message', function(msg){
    if(msg.content === 'ping'){
        msg.reply('pong');
    }
});

每当有人在频道中写“ping”时,上面的代码都会以“pong”回复机器人。

与大多数机器人一样,通常您会与他们交谈并向他们询问类似@mybot blahblahblah的内容 - 然后他们会回复。

我想这样做。我希望mybot仅在与他交谈时回复。必须有msg.recipientListmsg.recipients来捕获@mybot。我查看了Discord.js的文档,我很难找到这个结果。

2 个答案:

答案 0 :(得分:3)

有几种不同的方法可以做到这一点,但我认为最“优雅”的方法是使用Message.isMentioned作为参数作为对象(类型为User,GuildChannel,Role,string)来检查@reference对象的消息。您需要做的就是提供机器人的User对象(基类的存储对象是ClientUser实例,但User是其超类)。

// I'm assuming chatroom is your bot's DiscordClient instance,
// if it isn't then replace the "chatroom" in chatroom.user with the bot's 
// DiscordClient.
chatroom.on('message', msg => {
  if (msg.isMentioned(chatroom.user)) {
    msg.reply('pong');
  }
});

答案 1 :(得分:0)

您也可以使用 if(message.content.startsWith(prefix))if(message.content.indexOf("what you are looking in message") != -1)。第一个是当您希望消息以前缀开头时,第二个是当您希望某物出现在消息中时。