Как можно создать эффект анимации при удалении сообщения в Telegram боте?

Как можно реализовать анимацию удаления сообщения с кнопкой "назад" в боте, используя aiogram или другие методы?
  • 24 декабря 2023 г. 12:47
Ответы на вопрос 2
Существует несколько способов создания эффекта анимации при удалении сообщения в Telegram боте, в основном это связано с использованием анимированных GIF-файлов или стикеров. 

Один из способов реализовать анимацию удаления сообщения — использовать библиотеку aiogram для отправки анимированной GIF-картинки в ответ на команду удаления сообщения. Например:

```python
import asyncio
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor

bot = Bot(token='your_bot_token')  # замените 'your_bot_token' на токен вашего бота
dp = Dispatcher(bot)

@dp.message_handler(commands=['delete_message'])
async def delete_message(message: types.Message):
    await message.reply_animation(animation='https://example.com/delete_animation.gif', caption='Сообщение удалено!')

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
```

В этом примере команда /delete_message вызывает отправку анимации удаления сообщения, указанной по URL.
Вы можете создать собственные анимации либо найти готовые анимированные GIF-файлы в Интернете. Важно убедиться, что используемая анимация соответствует требованиям Telegram (например, размер файла не должен превышать 20 МБ).

Если вы хотите добавить кнопку "назад" к анимации удаления сообщения, вы можете воспользоваться клавиатурами inline-keyboard из библиотеки aiogram:

```python
@dp.message_handler(commands=['delete_message'])
async def delete_message(message: types.Message):
    animation_url = 'https://example.com/delete_animation.gif'
    await message.reply_animation(animation=animation_url, caption='Сообщение удалено!', reply_markup=types.InlineKeyboardMarkup().add(types.InlineKeyboardButton(text='Назад', callback_data='back')))

@dp.callback_query_handler(lambda callback_query: callback_query.data == 'back')
async def process_callback_button(callback_query: types.CallbackQuery):
    await callback_query.answer('Возвращаемся назад!')
    await callback_query.message.delete()
```

В этом примере добавлена кнопка "Назад" с callback_data='back'. При нажатии на кнопку будет вызван обработчик callback_query_handler, который удалит сообщение с анимацией удаления.

Вы можете настроить внешний вид и поведение кнопок inline-keyboard в соответствии с вашими потребностями.

Обратите внимание, что эти примеры основаны на использовании библиотеки aiogram, которая является одним из популярных инструментов для создания ботов Telegram на языке Python.
Это анимация действует у всех по дефолту ( только на удаление сообщения message.delete(), на edit не распространяется). Она ужасна и не юзабельна. Все у кого удалялись сообщения теперь нужно переписывать на edit. Уже обсудили в конфе aiogram3. Пока что она только на Андроиде, надеюсь до айфонов Дуров не доберется.
Похожие вопросы