

Discord.jsを用いてBotを作成しているものです。  
このbotには、以下の機能が搭載されています。

<ロール管理>  
・!login ロール名:ロール取得  
・!logout ロール名:ロール剥奪

<サーバー管理>  
・testロール所有者の送信テキストの代理送信  
・mutedロール所有者の送信テキストの削除

コードの記述順は上の通りです。

以下はサーバー管理の部分のコードになります。

[code]

    client.on('messageCreate', msg => {
      if (msg.member.roles.cache.some(role => role.name === 'test')) {
        msg.delete();
        msg.channel.send(`test: ${msg.content}`);
      }
    
    //mutedロール所有者のメッセージ削除
      if (msg.member.roles.cache.some(role => role.name === 'muted')) {
        msg.delete();
      }
      
    });
    
[/code]

この部分の”mutedロール所有者のメッセージ削除”の部分が悪さをしているのか、mutedロールを所有しているユーザーが!logout
mutedを実行しようとするとbotがエラーを起こし止まってしまいます。

内部処理としては

  1. !logout mutedを検知する
  2. mutedロールを持つユーザーかどうかチェックする
  3. 2がtrueならメッセージ削除、falseならそのまま残す
  4. 3の結果に問わずlogoutの処理が実行されるが、メッセージが削除されている場合!logout mutedの検知に失敗してエラーを起こす

となっていると思うのですが、これの対処法を教えていただきたいです。  
2の処理でreturnを嚙ませるとこれまたエラーを吐いてbotが停止します。


CC BY-SA 4.0
2023-03-18T17:06:36.230
94239
2023-08-05T19:13:39.653
2023-03-19T05:21:40.660
3060
57585
question
javascript discord
サーバー管理botのエラー(Discord.js)


良い解答になるかよくわかりませんが、提供されているコードだけでは、正確な修正点などをお答えすることはできませんね。

やりたい機能については、スラッシュコマンドを使用した方が簡単でいいと思います。

何かあれば、言っていただければ代理でBOTの作成など行えますm(__)m


CC BY-SA 4.0
2023-08-05T19:13:39.653
95863
2023-08-05T19:13:39.653
56040
94239
answer