ホームページ >バックエンド開発 >Python チュートリアル >「on_message()」を実装した後、Discord コマンドが動作しなくなるのはなぜですか?
on_message() の実装後にコマンドが無効になる
discord.py の on_message() イベントを使用すると、ユーザーはコマンドが無効になる問題が発生する可能性があります。仕事をやめてください。これは、特に有効にしない限りコマンドの実行を無効にする on_message() のオーバーライド特性によるものです。
問題への対処
この問題を解決するには、次の手順を実行します。 on_message() 関数の最後に bot.process_commands(message) への呼び出しを追加することが重要です。この行は、メッセージに含まれるコマンドを処理するように Discord に指示します。
修正コード
これは、以下を組み込んだコードの修正バージョンです。 bot.process_commands(message):
import discord import asyncio from discord.ext import commands bot = commands.Bot(command_prefix = '-') @bot.event async def on_ready(): print('Logged in as') print(bot.user.name) print(bot.user.id) print('------') @bot.event async def on_message(message): if message.content.startswith('-debug'): await message.channel.send('d') # Process any commands present in the message await bot.process_commands(message) @bot.command(pass_context=True) async def ping(ctx): await ctx.channel.send('Pong!') @bot.command(pass_context=True) async def add(ctx, *, arg): await ctx.send(arg)
説明
デフォルトの on_message() イベントには、内部的に bot.process_commands(message) への呼び出しが含まれています。この行により、メッセージ内のコマンドの実行が可能になります。デフォルトの on_message() をオーバーライドすると、コマンドの処理を効果的にブロックできます。 bot.process_commands(message) を追加すると、必要な機能が手動で復元されます。
結論
前述のソリューションを実装することで、on_message() での両方のデバッグ出力を確実に行うことができます。カスタム コマンドは正しく機能します。
以上が「on_message()」を実装した後、Discord コマンドが動作しなくなるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。