У меня возникла необходимость реализовать отложенную очистку сообщений в асинхронной функции. Ситуация следующая: я отправляю несколько сообщений и затем хочу удалить их все. Параметр inter.send("Example", delete_after = 20) не подходит в данном случае. Я использую функцию inter.channel.purge(limit = 3). Я попробовал применить asyncio.sleep(10), но это не дало результата. Первое сообщение содержит кнопки, и если пользователь не нажимает на них в течение 3 минут, сообщение удаляется. Однако мне нужно удалить это сообщение спустя 10 секунд после того, как была нажата кнопка. Я не знаю, как это реализовать, поэтому решил использовать метод с inter.channel.purge(limit = 3). Вот код функции: ```python @bot.slash_command(name = "setting", description = "Для настройки голосового канала") async def Setting_Channel(inter): view = Set_Channel() await inter.send("Настройте канал, для дальнейшего присоединения пользователей", view = view, delete_after = 180) await view.wait() if view.value == 1: await inter.send("Starcraft", delete_after = 10) await inter.channel.purge(limit = 3) elif view.value == 2: await inter.send("LoL", delete_after = 10) elif view.value == 3: await inter.send("Over", delete_after = 10) ``` Этот код написан на disnake, но в discord.py он практически такой же. Можете подсказать, как можно решить данную задачу?
Для решения вашей задачи вам нужно подождать некоторое время после нажатия кнопки, а затем удалить сообщение. Вместо использования `inter.channel.purge(limit=3)`, вы можете использовать метод удаления конкретных сообщений с помощью `message.delete()`. Это позволит вам точно контролировать, какое сообщение удалять и когда. Вот пример, как это можно реализовать: ```python @bot.slash_command(name="setting", description="Для настройки голосового канала") async def Setting_Channel(inter): view = Set_Channel() # Отправляем начальное сообщение с кнопками initial_message = await inter.send("Настройте канал, для дальнейшего присоединения пользователей", view=view, delete_after=180) await view.wait() # В зависимости от нажатой кнопки выполняем действия if view.value in [1, 2, 3]: channel_message = "" # Определяем текст сообщения if view.value == 1: channel_message = "Starcraft" elif view.value == 2: channel_message = "LoL" elif view.value == 3: channel_message = "Over" # Отправляем сообщение, а затем ждем 10 секунд перед его удалением new_message = await inter.send(channel_message, delete_after=10) # Ждем 10 секунд await asyncio.sleep(10) # Удаляем изначальное сообщение (через 10 секунд после нажатия на кнопку) await initial_message.delete() # Здесь вы можете также удалить новое сообщение, если это необходимо # await new_message.delete() # Если хотите удалить новое сообщение ``` ### Что происходит в этом коде: 1. Основное сообщение отправляется с кнопками и ожидает нажатия. 2. После нажатия кнопки в зависимости от значения `view.value` создается текст сообщения. 3. Новое сообщение отправляется в канал. 4. С помощью `await asyncio.sleep(10)` приостанавливается выполнение функции на 10 секунд. 5. После ожидания изначальное сообщение удаляется. Теперь, при нажатии кнопки, вы сможете удалять нужные сообщения с задержкой, как вы и планировали.