簡體   English   中英

角色檢查器機器人 - Discord.js - ReferenceError:未定義成員

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM