2017-04-17 73 views
1

所以,我正在編寫一個Discord bot,我希望它做的事情之一就是在給定的條件下爲成員分配角色。看完文檔後,特別是here,我認爲bot.addMemberToRole是一個很好的命令。然而,當我跑了,我得到這個錯誤信息:Discord.js client.addMemberToRole無法正常工作

類型錯誤:bot.addMemberToRole不是一個函數

我是可以理解的困惑,因爲文件明確表示,這是一個功能。我已經嘗試做bot.addMemberToRole(成員,角色),addMemberToRole(成員,角色),和其他幾個迭代。這是我最近一次嘗試:

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

bot.addMemberToRole(member, role, function(err){ 
    if(err){ 
     console.log(err); 
    } 
}); 

我也做了眼前這個:

bot.addMemberToRole(member, role); 

都給出了相同的類型錯誤如上。

我不知道爲什麼它不起作用。我精確地跟蹤了文檔,我傳入的成員和角色變量是正確的類型,其他Discord.js命令在我的機器人中工作得很好。任何幫助,將不勝感激。

回答

1

您使用的是舊版本的文檔,因此函數不再存在。他們應該真的擺脫這些。您正在尋找GuildMember.addRole(Role or String)

要將成員添加到角色,您需要一個GuildMember和一個角色對象(或角色的名稱)。假設你有User對象和Guild對象(你的bot有一個加入的公會/服務器列表,並且大多數事件會有他們關聯的公會),你可以通過使用Guild.fetchMember(User)來獲得GuildMember。從那裏,您可以使用字符串或基於對象的addRole版本在GuildMember上添加角色。

下面是如何在接收到用戶發來的消息時做到這一點的一個例子,這個消息很容易,因爲消息有一個與它關聯的GuildMember。

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

bot.on('message', (message) => { 
    const guildMember = message.member; 
    guildMember.addRole('bot-added-role'); 
}); 
+1

非常感謝您的幫助! –