У меня возникла проблема, и хотя я прошелся по всем доступным интернет-ресурсам, мне не удалось найти ответ. Я работаю с библиотекой disnake.py, и, похоже, я все сделал правильно, но программа не выполняется, и возникает ошибка. Вот код программы: <pre><code class="python">from typing import Optional import asyncio import disnake from disnake.ext import commands from disnake import TextInputStyle import os from dotenv import load_dotenv load_dotenv("secret.env") bot = commands.Bot( command_prefix= "!", intents= disnake.Intents.all(), activity= disnake.Game('Starcraft 2'), status= disnake.Status.online, test_guilds= [1278352420665294950], sync_commands_debug=True ) @bot.event async def on_command_error(ctx, error): print(error) if isinstance(error, commands.MissingPermissions): await ctx.send(f"{ctx.author}, у вас не достаточно прав для выполнения этой команды!") elif isinstance(error, commands.CommandOnCooldown): await ctx.send(error.retry_after) @bot.slash_command() #@commands.has_role(1284939541454651422) @commands.cooldown(rate = 1, per = 20, type = commands.BucketType.channel) async def setting_channel(inter: disnake.CommandInter):
Чтобы узнать время, необходимое для выполнения команды в вашем боте на основе библиотеки `disnake.py`, вы можете использовать модуль `time` или `asyncio`. Я предлагаю вам использовать `time.perf_counter()` для замера времени, так как он более точный для таких случаев. Вы можете добавить замер времени непосредственно в ваш обработчик команды. Вот пример, как это можно сделать: ```python import time import disnake from disnake.ext import commands # Ваш код остается почти неизменным до сюда... @bot.slash_command() @commands.cooldown(rate=1, per=20, type=commands.BucketType.channel) async def setting_channel(inter: disnake.CommandInter): start_time = time.perf_counter() # Начали отсчет времени # Ваш код для выполнения команды await inter.response.send_message("Выполнение команды...") # Подождите, например, выполнения каких-то асинхронных задач await asyncio.sleep(2) # Уберите или измените эту строку на ваш код end_time = time.perf_counter() # Закончили отсчет времени duration = end_time - start_time # Рассчитали длительность выполнения await inter.followup.send(f"Команда выполнена за {duration:.2f} секунд.") # Остальной код вашего бота... ``` Этот пример добавляет измерение времени выполнения команды `setting_channel`. Обратите внимание, что после завершения выполнения команды вы можете отправить пользователю сообщение с информацией о времени, затраченном на выполнение команды. Если ваш код выполняет какие-то длительные операции, вы можете делать замеры до и после этих операций, чтобы увидеть, сколько времени они занимают.
Способ с on_command_error почти верный, только ошибки слеш команд попадают в событие on_slash_command_error