@twink132

Как посчитать количество отправляемых фотографий для ограничения отправки по кол-ву фото?

Пишу телеграм бота, который отправляет фото в нужный канал, в зависимости от выбранного региона пользователем.
Код следующий:
@bot.message_handler(content_types = ['photo', 'text']) ## обработчик данных фото и текста инициализация
def echo(message): ##функция отправляющая сообщения
    u = mapUser(message.from_user)
    user = fetchUser(u)
    if user == False:
        return
    channel = mrfToChannels[user.MRF] 
    chat_id = channel.channel_chat_id
    if message.text == "/start" or message.text == "/Analytics" or message.text == "/countusers":
        bot.send_message(message.chat.id, "<b>ОШИБКА:</b> Отправка команды <b>/start</b> в канал запрещена.", 
        parse_mode="HTML")
        bot.send_message(message.chat.id, 
        "Попробуйте снова по следующей инструкции:\n1. Введите команду <b>/start</b>, ожидайте сообщение-привествие\n2. Пишите свое обращение, приклепляйте фото по необходимости", 
        parse_mode="HTML")
        return
    else: 

        if(message.caption): 
            caption = message.caption + "\n\nЗапрос от монтера - #" + u.fullname().replace(" ", "_")
        else:
            caption = "\n\nЗапрос от монтера - #" + u.fullname().replace(" ", "_")

        if message.content_type == 'photo': 
            photo_id = message.photo[-1].file_id
            sendedMessage = bot.send_photo(chat_id, photo_id, caption)
        elif message.content_type == 'text':
            sendedMessage = bot.send_message(chat_id, text=message.text + "\n\nЗапрос от монтера - #" + u.fullname().replace(" ", "_"))

    
    bot.send_message(message.chat.id, f"Для перехода в канал обращения перейдите по ссылке {channel.channel_link}")
    bot.send_message(message.chat.id, "Для создания нового обращения введите команду /start")
    save_bot_repost_info(message, sendedMessage)

Каким образом можно подсчитать кол-во фотографий который отправляет пользователь? необходимо ограничить так, чтобы нельзя было отправить больше 1 фото и выходило return'ом с цикла с сообщением. Сейчас получается в случае отправки больше 1 фото отправка фото несколькими постами в канал так как каждое фото считается отдельным сообщением.
  • Вопрос задан
  • 581 просмотр
Решения вопроса 2
SoreMix
@SoreMix Куратор тега Python
yellow
В самом начале функции
if message.media_group_id:
    return


Ну или что там нужно
Ответ написан
@MaxKra1985
разработчик java, python
Бот видит группу фотографий как отдельные сообщения, но при этом у них есть media_group_id со значением общим для всех сообщений из группы.
Более того - они могу приходить с интервалом, если размер большой или интернет медленный.
То есть ориентируйтесь на наличие media_group_id во входящих сообщениях.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы