Как получить несколько сообщений в python -telegram-bot? - PullRequest
1 голос
/ 02 августа 2020

Я отправляю боту в телеграмме несколько изображений за раз. Я пытаюсь создать conversational chatbot с помощью python -телеграмм-бота.

вот мой код:

def main():
updater = Updater("1141074258:Axxxxxxxxxxxxxxxxxxxxxxxxg", use_context=True)

dp = updater.dispatcher
conv_handler = ConversationHandler(
    entry_points = [CommandHandler('start',start)],

    states = {
    CHOSEN_OPTION: [MessageHandler(Filters.regex('^(Option2|Option3|Option4)$'),choose_option)],
    PRODUCTS: [MessageHandler(Filters.text | Filters.photo,products)],
    Option2: [MessageHandler(Filters.text,option2)],
    Option3: [MessageHandler(Filters.text,option3)],
    Option4: [CommandHandler('create', create_order)]
    },
    fallbacks=[CommandHandler('cancel', cancel)]
)
dp.add_handler(conv_handler)
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()



@run_async
def products(update,context):
    logger.info("update is %s",update)
    input_message = update.message.text
    if input_message:
        data['products'] = input_message
        logger.info("product  text is:%s",input_message)
    elif update.message.photo:
        photo_list = []
        bot = context.bot
        length = len(update.message.photo)
        for photo in range(0,length):
            ident = update.message.photo[photo].file_id
            getFile = context.bot.get_file(ident)
            photo_list.append(getFile['file_path'])
        data['products_image'] = photo_list
    update.message.reply_text("Please type name.",)
    return Option3

Если я отправляю 2 изображения одновременно, я получаю одно изображение с другим размером (3 раза), как я могу получить два фактических сообщения?

1 Ответ

0 голосов
/ 10 августа 2020

если обновление содержит фото, возвратите ПРОДУКТЫ для получения других фотографий, иначе получите текст и вернитесь в любое желаемое состояние

@run_async
def products(update,context):
    logger.info("update is %s",update)
    if update.message.photo:
        # to what you want with your photos
        
        return PRODUCTS
    
    if update.message.text:
        # getting product text 
        
        return Option3
...