Я создаю бот-диск с python, используя переписанную версию библиотеки диска. Я хочу создать обработчик событий speci c для каждого cog , и я нашел метод ' cog_command_error ', просматривая документацию. Проблема в том, что я не могу использовать его из-за ошибки, я пытался интерпретировать это, но без каких-либо реальных результатов. Я думаю, что речь идет о передаче параметра в качестве аргумента ошибки, но я не уверен; Я не опытный человек в этой области, действительно, я часами гуглял в поисках примера, который действительно работает, но все образцы, которые я нашел и опробовал, не работают. если я использую on_command_error, он работает, но обрабатывает ошибки других винтиков, и я не хочу, чтобы это произошло.
Извините за мой плохой английский sh, но я итальянец.
Вот этот код:
import discord
import os
from discord.ext import commands
from dotenv import load_dotenv
client = commands.Bot(command_prefix = '.', case_insensitive=True)
load_dotenv(os.path.join('bot.env'))
TOKEN = os.getenv('BOT_TOKEN')
async def cog_command_error(ctx, error):
print("\nsalve\n")
if isinstance(error, commands.MissingRequiredArgument):
await ctx.send('You need to specify a module')
else:
raise error
@client.command()
async def load(ctx, extension):
if extension.casefold() == 'all':
for filename in os.listdir('./cogs'):
if filename.endswith('.py'):
try:
client.load_extension(f'cogs.{filename[:-3]}') #Cut last 3 char (.py)
except:
pass
await ctx.send('Loaded all extensions')
else:
try:
client.load_extension(f'cogs.{extension}')
await ctx.send(f'Loaded {extension} extension')
except:
await ctx.send("Extension already loaded or doesn't exist")
for filename in os.listdir('./cogs'):
if filename.endswith('.py'):
client.load_extension(f'cogs.{filename[:-3]}') #Cut last 3 char (.py)
client.run(TOKEN);
И ошибка:
Ignoring exception in command load:
Traceback (most recent call last):
File "C:\Users\Manuel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\bot.py", line 892, in invoke
await ctx.command.invoke(ctx)
File "C:\Users\Manuel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\core.py", line 790, in invoke
await self.prepare(ctx)
File "C:\Users\Manuel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\core.py", line 751, in prepare
await self._parse_arguments(ctx)
File "C:\Users\Manuel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\core.py", line 670, in _parse_arguments
transformed = await self.transform(ctx, param)
File "C:\Users\Manuel\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\core.py", line 516, in transform
raise MissingRequiredArgument(param)
discord.ext.commands.errors.MissingRequiredArgument: extension is a required argument that is missing.