>백엔드 개발 >파이썬 튜토리얼 >'on_message()' 구현 후 Discord 명령이 작동하지 않는 이유는 무엇입니까?

'on_message()' 구현 후 Discord 명령이 작동하지 않는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-13 15:58:18986검색

Why Do My Discord Commands Stop Working After Implementing `on_message()`?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.