Python Discord ボット内にカスタムの on_message() イベントを実装すると、ユーザーはコマンド、 -ping や -add などは実行に失敗します。これは、特にボットが例外なく機能しているように見える場合に、不可解になる可能性があります。
この動作の根本的な理由は、on_message() イベントとコマンド処理の間の相互作用にあります。デフォルトでは、Discord.py ライブラリには、受信メッセージを処理し、メッセージ内に存在するコマンドを処理する組み込みの on_message() イベントが含まれています。ただし、デフォルトの on_message() をカスタムの on_message() でオーバーライドすると、自動コマンド処理が実質的に行われなくなります。
この問題を解決するには、明示的に bot.process_commands(message) への呼び出しを追加する必要があります。カスタムの on_message() イベントの最後に。これにより、ボットが意図したとおりにコマンドを処理することが保証されます。以下に例を示します:
この追加により、ボットはカスタム ロジックとユーザーが入力するコマンドの両方を処理できるようになります。 bot.process_commands() 関数は基本的に、カスタム オーバーライドが存在しない場合に組み込みの on_message() イベントが自動的に処理することを実行します。
この推奨事項に従うことで、ボットがカスタム処理と並行してコマンドを実行できるようにすることができます。 on_message() イベント ハンドラーに実装しました。
以上がカスタム `on_message()` を実装した後、Discord ボットがコマンドを処理しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。