執行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() 中的偵錯輸出並且您的自訂命令可以正常運作。以上是為什麼我的 Discord 指令在實作 `on_message()` 後停止運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!