javascript - UnhandledPromiseRejectionWarning: TypeError: 未定義のプロパティ ,hasPermission を読み取れません

okwaves2024-01-25  8

discord ボットを作成しています。discord.js の v12 を学びました。discord でスパム対策コマンドを作成し、完了したときにコマンドを実行すると、エラー TypeError: Cannot read が発生しました。プロパティ「hasPermission」は未定義であり、これが私のコードです。ちなみにこれはコマンド ハンドラーです

    const AntiSpam = require("./spam.js");
    
    const cooldown = new Set();
    
    client.on("message", async (message, member) => {
    
        if (!message.member.hasPermission('ADMINISTRATOR')) {
    
          if(message.author.bot) return;
          if (!message.guild) return;
          if(!message.guild.members.cache.get(client.user.id).hasPermission("ADMINISTRATOR")) return;
         if(!message.member) return;
         let spam = await db.fetch(`spamEngel_${message.guild.id}`) 
         if(!spam) return;
         AntiSpam(client, message);
        }
    });

同じことを行う 4 つの if が連続している場合は、それらを or (||) で組み合わせるとよいでしょう。

– DBS

2020 年 9 月 3 日 10:39

メッセージまたはメンバーのいずれかが未定義です。このため、このエラーが発生します。

– シャバム・ヴェルマ

2020 年 9 月 3 日 10:39



------------------------

message.member ギルド メンバーとしてのメッセージの作成者を表します。それ以外の場合は未定義になります。その場合は message.author を探す必要があります。彼らのドキュメントを見てください https://discord.js.org/#/docs/main/stable/class/Message?scrollTo=member

3

エラーが発生します > message.author.hasPermission は関数ではありません

– TheClawNz

2020 年 9 月 3 日 10:55

作成者がギルドメンバーではない場合、権限を確認することはできません。ユーザー (discord.js.org/#/docs/main/stable/class/User) には hasPermissions 関数がありません

– ウィリアム・リッツィ

2020 年 9 月 4 日 11:08

ギルドメンバーは DM では常に未定義になります。ギルド チャネルで送信されるメッセージである必要があります

– ウィリアム・リッツィ

2020 年 9 月 4 日 11:17



------------------------

client.on("message", async (message, member) => でメンバーを定義しました。この行からメンバーを削除すると、メンバーは次の行によって定義されます。message.member を使用してメッセージを送信します。それ以外は、コードは良さそうです。 「if」の数を減らすことができることを覚えておいてください。すべてを 1 つの if に入れて && で接続します (例: if( x!= 2 && x > 0))

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。