• Как прекратить "слушать" bot.*_handler?

    @Alexa2007
    В данном варианте думаю вместо декораторов, следует использовать знакомый тебе метод bot.register_next_step_handler(massage,save_name). В примере с гитхаба видно как задается вопрос какой пол? и добавляется две кнопки м и ж, а в том сообщении куда они передаются, удаляются, а ответ обрабатывается как текст.
    def process_age_step(message):
        try:
            chat_id = message.chat.id
            age = message.text
            if not age.isdigit():
                msg = bot.reply_to(message, 'Age should be a number. How old are you?')
                bot.register_next_step_handler(msg, process_age_step)
                return
            user = user_dict[chat_id]
            user.age = age
            markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
            markup.add('Male', 'Female')
            msg = bot.reply_to(message, 'What is your gender', reply_markup=markup)
            bot.register_next_step_handler(msg, process_sex_step)
        except Exception as e:
            bot.reply_to(message, 'oooops')
    
    
    def process_sex_step(message):
        try:
            chat_id = message.chat.id
            sex = message.text


    Еще хотел бы предложить внести изменения в код, в таких случаях:
    keybord = keybord_yes_or_no()
        bot.send_message(massage.from_user.id, text= quest, reply_markup=keybord)


    Если генерировать кнопки таким способом, будет на одну строчку меньше:
    def day_btns():
      days = types.InlineKeyboardMarkup(row_width=7)
      days.add(*[types.InlineKeyboardButton(text='Day '+str(i),callback_data='call'+str(i)) for i in range(1,8)])
      return days
    
    #Пример использования
    bot.send_message(message.chat.id,'Days of week',reply_markup=day_btns())
    #Хватает и одной строки

    Так же если интересно вот полный образец моего тестового бота
    Ответ написан
    2 комментария
  • Как прописать исключения для перезагрузки старицы?

    @bodrich
    Неправильный указан класс исключения, вместо except browser нужно написать except selenium.common.exceptions.WebDriverException
    Ответ написан
    1 комментарий
  • Как корректно осуществить сохранение результата после парсинга BeautifulSoup?

    @GeneD88
    QA
    Во-первых, уважайте пользователей и приводите листинг ошибки.
    Во-вторых, ошибка с ключом появляется потому, что вы неправильно собираете объект phone.
    У вас он, если вы напишите правильно xpath, выглядит так (список):
    [{'title': ' Смартфон Samsung Galaxy S21 128GB Phantom Violet (SM-G991B) '}, {'title': ' Смартфон Apple iPhone 12 128GB Black (MGJA3RU/A) '}, {'title': ' Смартфон Xiaomi Mi 10T 8+128GB Black '}, {'title': ' Смартфон Huawei Mate 40 Pro Mystic Silver (NOH-NX9) '}, {'title': ' Смартфон Nokia 3.4 3+64GB Blue (TA-1283) '}, {'title': ' Смартфон Xiaomi Redmi 9 3+32GB Carbon Grey '}, {'title': ' Смартфон Apple iPhone 11 128GB Black (MHDH3RU/A) '}, {'title': ' Смартфон Apple iPhone 11 64GB Black (MHDA3RU/A) '}, {'title': ' Смартфон Apple iPhone XR 64GB Black (MH6M3RU/A) '}, {'price': '67 990 руб.'}, {'price': '84 990 руб.'}, {'price': '40 990 руб.'}, {'price': '89 990 руб.'}, {'price': '11 490 руб.'}, {'price': '9 990 руб.'}, {'price': '59 990 руб.'}, {'price': '54 990 руб.'}, {'price': '44 990 руб.'}]


    Делать лучше как словарь. {телефон: цена}
    Ответ написан
    3 комментария