2017-07-26 24 views
3

私は単純な引用ボットをサーバー用に作成しましたが、管理者はmod + peopleが迷惑メールを避けるために引用符を追加できるようにしたいと考えています。私はドキュメンテーションに行き、すべてをやったが、これを動作させることはできない。ここに私が持っているものは次のとおりです:誰かが役割を持っているかどうかDiscord.Js

//other code 
    else if (command === "addquote" && arg) { 
    let adminRole = message.guild.roles.find("name", "Admin"); 
    let modRole = message.guild.roles.find("name", "Mod"); 

    if(message.member.roles.has(adminRole) || message.member.roles.has(modRole)){ 
     const hasArr = arr.some((el) => { 
      return el.toLowerCase().replace(/\s/g, '') === arg.toLowerCase().replace(/\s/g, ''); 
     }); 

     if(hasArr){ 
      message.channel.send(arg.replace(/\s+/g,' ').trim() + " is already a Quote"); 
     } else { 
      fs.appendFileSync('./Quotes.txt', '\r\n' + arg); 
      message.channel.send("Quote added: " + arg); 
      arr.push(arg);    
     } 
    } 
} 

非常に厄介です。時には、ユーザーがmodロールを持っていれば、それはうまくいくでしょう。私が行う場合

console.log(message.memeber.roles.has(adminRole)); 
console.log(message.memeber.roles.has(modRole)); 

両方がfalseに出力されますが、動作しますか? 正直なところ、私はこの時点では分かりません。

答えて

6

message.member.rolesはコレクションです。ロールオブジェクトを取得する代わりに、それを探して、コレクション内でロールを直接探すだけです。これを試してみてください:

else if (command === "addquote" && arg) { 
    if(message.member.roles.find("name", "Admin") || message.member.roles.find("name", "Mod")){ 
     //Rest of your code 
    } 

、ロール名は、任意のロール名であります場合は、任意の絵文字を含む検索に入れて名前でなければなりません。

+0

私が家に帰るとき、私はどうもありがとう、これをテストします! –

0

Map.hasメソッドでは値ではなくキーがチェックされるため、ロールのIDを代わりに使用する必要があります。

message.member.roles.has(adminRole.id)

message.member.roles.has(modRole.id)

+0

ああ、ありがとうございます。しかし、修正を加えて.id部分を追加すると、if文を実行するときに「nullのプロパティを見つけることができません」というエラーが表示されます –

関連する問題