2017-02-21 117 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

是的,聊天室是客戶端。謝謝。那個答案奏效了! –