Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Perintah Discord Saya Berhenti Berfungsi Selepas Melaksanakan `on_message()`?

Mengapa Perintah Discord Saya Berhenti Berfungsi Selepas Melaksanakan `on_message()`?

Susan Sarandon
Susan Sarandonasal
2024-12-13 15:58:18986semak imbas

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

Perintah Dilumpuhkan Selepas Pelaksanaan on_message()

Apabila menggunakan acara on_message() discord.py, pengguna mungkin menghadapi masalah apabila arahan mereka berhenti kerja. Ini disebabkan sifat overriding on_message(), yang melumpuhkan pelaksanaan perintah melainkan didayakan secara khusus.

Menangani Isu

Untuk menyelesaikan isu ini, ia adalah penting untuk menambah panggilan ke bot.process_commands(message) pada penghujung fungsi on_message() anda. Baris ini mengarahkan Discord untuk memproses sebarang arahan yang terdapat dalam mesej.

Kod Diubahsuai

Berikut ialah versi diubah suai kod anda yang menggabungkan 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)

Penjelasan

Acara lalai on_message() termasuk panggilan ke bot.process_commands(message) secara dalaman. Baris ini membolehkan pelaksanaan arahan dalam mesej. Dengan mengatasi on_message() lalai, anda menyekat pemprosesan arahan dengan berkesan. Menambah bot.process_commands(message) secara manual memulihkan kefungsian yang diingini.

Kesimpulan

Dengan melaksanakan penyelesaian yang dinyatakan di atas, anda boleh memastikan bahawa kedua-dua output nyahpepijat dalam on_message() dan arahan tersuai anda berfungsi dengan betul.

Atas ialah kandungan terperinci Mengapa Perintah Discord Saya Berhenti Berfungsi Selepas Melaksanakan `on_message()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn