discord.py @bot.command() не выполняется

#python #function #bots #discord.py #discord.py-rewrite

#python #функция #боты #discord.py #discord.py-перезаписать

Вопрос:

У меня получилось что-то вроде этого.

 from flask import Flask
from threading import Thread
import discord
from discord.ext import commands, tasks
from discord.utils import get
import requests
from Moderator.badwords import words
import time
import datetime
from Stats.uptime import data

help_command = commands.DefaultHelpCommand(
    no_category = 'Commands'
)

intents = discord.Intents().all()
bot = commands.Bot(command_prefix='!', description="Hey there, I'm Botty (for example)!", help_command=help_command, intents=intents)

@bot.command()
async def hello(ctx):
  await ctx.send(ctx.author.mention   " hello!")

@bot.event
async def on_ready():
  print('Ready!')

@bot.event
async def on_message(message):
    for word in words:
        if word in message.content.lower():
            await message.delete()
            await message.channel.send("Oops! Seems like "   message.author.mention   " was trying to send a message that was breaking the "   bot.get_channel(783064049859559434).mention   ". Luckily, I deleted it before it caused any more damage. Don't send any more messages like that!nnIf you think that I made an error, please report it in "   bot.get_channel(783074030265040916).mention   ", "   bot.get_channel(783074002255478848).mention   " or in "   bot.get_channel(783092164590174251).mention)

@bot.event
async def on_member_join(member):
  print(f"{member} joined the server")

bot.run(TOKEN)
 

Теперь я могу скомпилировать и запустить этот код без ошибок, и когда участник присоединяется или пользователь отправляет сообщение, все работает отлично. Но когда дело доходит до выполнения команд, оно даже не запускается. Я чего-то не понимаю?

Заранее спасибо

Комментарии:

1. Вы инициализируете бота чем-то вроде bot = commands.Bot(command_prefix='$') ?

2. я опубликую весь код

3. @thshea но да, он инициализирован

Ответ №1:

Документация:

Переопределение значения по умолчанию, предоставленного on_message, запрещает выполнение любых дополнительных команд. Чтобы исправить это, добавьте bot.process_commands(message) строку в конец вашего on_message.

Если вы переопределяете an on_message , вам нужно использовать await bot.process_commands(message) , чтобы команды обрабатывались. Попробуйте добавить это в свое on_message событие.

Комментарии:

1. Да! Теперь это работает. Пожалуйста, добавьте await , потому что он отсутствует, чтобы другие не путались

Ответ №2:

Кажется, что этот код в полном порядке, вы правильно определили префикс? Чтобы определить префикс, который вам нужно импортировать commands из discord.ext вашего бота, он должен выглядеть следующим образом:

 from discord.ext import commands
import discord
TOKEN = ...
bot = commands.Bot(command_prefix=".")
#####
async functions
#####
bot.run(TOKEN)
 

Комментарии:

1. Это уже было определено, хотя и не было в опубликованном коде. До сегодняшнего дня код работал отлично.