2017-02-21 119 views
1

我已经创建了自己的Node.js机器人以在我的不一致服务器中工作。discord.js node.js - 机器人回复收件人

我的机器人名为mybot

我见过很多响应传入消息的例子 - 它们看起来像这样(并且工作得很好)。

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

无论何时只要有人在通道中写入“ping”,上面的代码都会让bot回复“pong”。

与大多数机器人一样,通常你会跟他们说话,并要求他们提供类似@mybot blahblahblah的东西 - 然后他们会回复。

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

回答

1

有几种不同的方法可以做到这一点,但我认为最“优雅”的方法是使用Message.isMentioned,它以一个对象(User,GuildChannel,Role,string类型)作为参数来检查消息是否存在@参考对象。所有你需要做的是提供你的机器人的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

是的,聊天室是客户端。谢谢。那个答案奏效了! –