@VAPORHOUSE

Как исправить медиа группу под aiogram 2.25.1?

Здравствуйте. Есть данный код, но он не работает для Aiogram версии 2.25.1, потому что нет такого типа MEDIA_GROUP.

import logging, asyncio
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters import Command
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.types import ParseMode, InputFile
from aiogram.utils import executor

# Устанавливаем уровень логирования
logging.basicConfig(level=logging.INFO)

# Создаем бота и диспетчер
bot = Bot(token='')
dp = Dispatcher(bot, storage=MemoryStorage())

# Определяем состояния
class SaleForm(StatesGroup):
    waiting_for_description = State()
    waiting_for_media_group = State()

# Обработчик команды /sale
@dp.message_handler(Command('sale'))
async def cmd_sale(message: types.Message):
    # Спрашиваем у пользователя описание товара
    await message.answer('Введите описание товара, который вы хотите продать:')
    # Переходим в состояние ожидания описания товара
    await SaleForm.waiting_for_description.set()

# Обработчик текстового сообщения в состоянии ожидания описания товара
@dp.message_handler(state=SaleForm.waiting_for_description)
async def process_description(message: types.Message, state: FSMContext):
    # Сохраняем описание товара в контексте
    async with state.proxy() as data:
        data['description'] = message.text
        # Добавляем @username пользователя в конец описания товара
        data['description'] += f'nn@{message.from_user.username}'
        # Сохраняем id пользователя в контексте
        data['user_id'] = message.from_user.id
    # Спрашиваем у пользователя медиа группу товара
    await message.answer('Пришлите медиа группу товара:')
    # Переходим в состояние ожидания медиа группы товара
    await SaleForm.waiting_for_media_group.set()

# Обработчик медиа группы в состоянии ожидания медиа группы товара
@dp.message_handler(content_types=types.ContentType.MEDIA_GROUP, state=SaleForm.waiting_for_media_group)
async def process_media_group(message: types.Message, state: FSMContext):
    # Сохраняем медиа группу товара в контексте
    async with state.proxy() as data:
        data['media_group_id'] = message.media_group_id
    # Отправляем сообщение с описанием товара и медиа группой админам
    await bot.send_media_group(chat_id='-1001856694423', media=message.media_group, caption=data['description'], reply_markup=types.InlineKeyboardMarkup().add(types.InlineKeyboardButton('Подтвердить', callback_data='confirm'), types.InlineKeyboardButton('Отказать', callback_data='reject')))
    # Отправляем сообщение пользователю о том, что его объявление отправлено на модерацию
    await bot.send_message(chat_id=data['user_id'], text='Ваше объявление отправлено на модерацию')

# Обработчик нажатия на кнопку "Подтвердить"
@dp.callback_query_handler(lambda c: c.data == 'confirm')
async def process_confirm(callback_query: types.CallbackQuery, state: FSMContext):
    # Получаем данные из контекста
    async with state.proxy() as data:
        # Отправляем сообщение пользователю о том, что его объявление подтверждено
        await bot.send_message(chat_id=data['user_id'], text='Ваше объявление подтверждено')
        # Опубликовываем объявление в канале
        await bot.send_media_group(chat_id='-1001952596331', media=callback_query.message.media_group, caption=callback_query.message.caption, parse_mode=ParseMode.HTML)

# Обработчик нажатия на кнопку "Отказать"
@dp.callback_query_handler(lambda c: c.data == 'reject')
async def process_reject(callback_query: types.CallbackQuery, state: FSMContext):
    # Получаем данные из контекста
    async with state.proxy() as data:
        # Отправляем сообщение пользователю о том, что его объявление отклонено
        await bot.send_message(chat_id=data['user_id'], text='Вам отказано в объявлении')

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
  • Вопрос задан
  • 245 просмотров
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix
yellow
https://docs.aiogram.dev/en/latest/dispatcher/filt...

@dp.message_handler(is_media_group=True)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Goodt Екатеринбург
от 20 000 до 30 000 ₽
XIAG AG Новосибирск
от 280 000 до 410 000 ₽
KLBR Санкт-Петербург
от 120 000 до 170 000 ₽