![](/img/trans.png)
[英]UnhandledPromiseRejectionWarning: ReferenceError: member is not defined discord.js
[英]Roles checker bot - Discord.js - ReferenceError: member is not defined
我正在嘗試為我的 Discord 服務器設置一個機器人。 基本上,只要有人在特定頻道(幫助頻道)中鍵入“test”,機器人就會顯示他們的角色。 如果他們有一個角色,比如貝克,機器人會說“你都准備好了,喜歡他們的甜蛋糕!”。 如果他們不這樣做,機器人會說“你沒有貝克角色。”
這是我的代碼:
client.on('message', (message) => {
if (message.content === 'test') {
if (member.roles.cache.some((role) => role.name === '<Baker>'))
message.reply("You're all set , enjoys them sweet cakes !");
else message.reply('You do not have the Baker role.');
}
});
我無法讓它工作; 錯誤日志說:
ReferenceError: member is not defined.
此外,我在服務器上有多個角色(貝克、測試員、主管等)。 那么,我是否必須為每個人編寫代碼?
您收到此錯誤是因為member
實際上未定義。 相反,您需要使用message.member
至於你的第二個問題,可能是的。 想到的事情是創建一個包含每個角色名稱的數組,然后創建一個for...of
循環。
const roles = ['<Baker>', '<Dancer>', '<Programmer>', '<Actor>'];
// iterate a loop through all elements in the array
for (role of roles) {
if (message.member.roles.cache.some((r) => r.name === role))
console.log(`${message.author.username} has the ${role} role.`);
}
您也可以使用.filter()
方法。
const roles = ['<Baker>', '<Dancer>', '<Programmer>', '<Actor>'];
console.log(
`Out of the roles in the array, ${
message.author.username
} has these roles: ${roles
.filter((role) => message.member.roles.cache.some((r) => r.name === role))
.join('\n')}`
);
member
沒有定義是對的。 如果您希望 member 是發起命令的人,您需要使用message.member
,如果您想獲得指定的成員,您可以使用message.guild.members.cache.get(<user id here>)
。
您可以通過使用角色的 id 檢查角色來縮短代碼,然后它看起來像if(message.member.roles.cache.has(<role id>)
。它還可以防止檢查具有相同的角色名字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.