Найти - Пользователи
Полная версия: Ошибка "Media group must include 2-10 items"
Начало » Python для новичков » Ошибка "Media group must include 2-10 items"
1 2
xammlo
Всем доброго времени суток!

При попытке отправить боту в телегу сообщение с фото или видео, выдает вот такую ошибку в консоле “Media group must include 2-10 items”.
И не отправляет их на модерацию в чат админов.
В чем может быть причина?

P.S. Вот код:
 @dp.message_handler(content_types=[ContentType.PHOTO], state=UserStates.all()[2])
async def advert_photo_input(message: types.Message):
print(message)
if 'photo' in adverts[message.from_user.id] and len(
adverts[message.from_user.id]['video'] + adverts[message.from_user.id]['photo']) < 10:
adverts[message.from_user.id]['photo'].append(message.photo[-1].file_id)
else:
adverts[message.from_user.id]['photo'] = [message.photo[-1].file_id]
print(adverts)

Прошу сильно не пинать, я начинающий!
xam1816
код вставляйте в теги
 [code python]здесь код[/code]
xammlo
xam1816
код вставляйте в теги
Понял, исправлюсь
FishHook
я не знаю, что это за бот, но чисто логически, здесь список из одного элемента
 adverts[message.from_user.id]['photo'] = [message.photo[-1].file_id]
в то время как
“Media group must include 2-10 items”
xammlo

Вот полный код.
Кол-во текста, фото или видео никак не влияет, проверял в разных вариантах и количество менял.


  
@dp.message_handler(state=UserStates.ADVERT_TEXT)
async def advert_txt_input(message: types.Message):
    state = dp.current_state(user=message.from_user.id)
    await state.set_state(UserStates.all()[2])
    await message.answer(texts[7], reply_markup=keyboard_media)
    adverts[message.from_user.id] = {'text': message.text}
    print(adverts)
@dp.message_handler(content_types=[ContentType.PHOTO], state=UserStates.all()[2])
async def advert_photo_input(message: types.Message):
    print(message)
    if 'photo' in adverts[message.from_user.id] and len(
            adverts[message.from_user.id]['video'] + adverts[message.from_user.id]['photo']) < 10:
        adverts[message.from_user.id]['photo'].append(message.photo[ [code python]-1].file_id)
    else:
        adverts[message.from_user.id]['photo'] = [message.photo[-1].file_id]
    print(adverts)
@dp.message_handler(state=UserStates.all()[2], content_types=[ContentType.VIDEO])
async def advert_video_input(message: types.Message):
    print(message)
    if 'video' in adverts[message.from_user.id] and len(
            adverts[message.from_user.id]['video'] + adverts[message.from_user.id]['photo']) < 10:
        adverts[message.from_user.id]['video'].append(message.video.file_id)
    else:
        adverts[message.from_user.id]['video'] = [message.video.file_id]
    print(adverts)
@dp.message_handler(state=UserStates.all()[2])
async def advert_confirmation(message: types.Message):
    print(adverts[message.from_user.id])
    await message.answer(texts[8])
    print(adverts[message.from_user.id].keys)
    if ('photo' in adverts[message.from_user.id].keys()) or ('video' in adverts[message.from_user.id].keys()):
        media = types.MediaGroup()
        for id in adverts[message.from_user.id].get('photo', []):
            if len(media.media) == 0:
                media.attach_photo(id, adverts[message.from_user.id]['text'])
            else:
                media.attach_photo(id)
        for id in adverts[message.from_user.id].get('video', []):
            if len(media.media) == 0:
                media.attach_video(id, caption=adverts[message.from_user.id]['text'])
            else:
                media.attach_video(id)
        await bot.send_media_group(message.chat.id, media=media)
        adverts[message.from_user.id]['media'] = media
        await message.answer('ㅤ', reply_markup=confirmation_keyboard)
    else:
        await message.answer(adverts[message.from_user.id]['text'], reply_markup=confirmation_keyboard)
    state = dp.current_state(user=message.from_user.id)
    await state.set_state(UserStates.all()[4])
[/code] 
py.user.next
xammlo
Вот полный код.
Можешь сначала начинать всё, а это всё можешь смело выбрасывать. Код уже дошёл до стадии говнокода, в котором ничего понять невозможно. И, как видишь, большие и информативные имена для переменных никак не помогают.
Из-за того, что это говнокод, ты и отладить его не можешь, потому что ошибка может быть где угодно. На то он и говнокод, чтобы в нём ошибки прятались, как мышки в лесу. Мышку грохнуть легко, только в лесу её хрен найдёшь.
xammlo
код писал не я(заказывал), вначале бот вроде работал, но потом перестал отправлять в админку.
исполнитель поправлял код 3 или 4 раза и потом вроде все заработало.
теперь приходится разбираться самому,навыков для написания с нуля нет к сожалению(
поэтому и прошу помощи в поиске ошибки.
xam1816
xammlo
поэтому и прошу помощи в поиске ошибки.
Опишите что делает этот бот,т.е что отправляет пользователь и что должно приходить к вам в админку.
xammlo
xam1816
пользователь отправляет боту тескт+фото+видео по нажатию кнопки “отправить”, а бот в свою очередь отправляет в админку для проверки на нецензуру и.т.д
по факту ничего не происходит, только в консоль выкатывает вышеуказанную ошибку
xammlo
Есть у кого -нибудь мысли что подправить?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB