Задать вопрос
@codexim

Как обработать данные в телеграм боте (телебот)?

import telebot
from telebot import types
bot = telebot.TeleBot('token')

@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
	bot.send_message(message.from_user.id, 'Вас приветствует NotifyBot(бот-напоминание)\n'
										   'Бот предназначен для создания напоминаний.')
	bot.send_message(message.from_user.id, 'Чтобы начать введите /notify или /n')
	bot.register_next_step_handler(message,notify_step)
def notify_step(message):
	ed_iden='Выберите единицу времени:'
	keyboard = types.InlineKeyboardMarkup()
	key_hour = types.InlineKeyboardButton(text='Часы', callback_data='hour')
	keyboard.add(key_hour)
	key_min = types.InlineKeyboardButton(text='Минуты', callback_data='min')
	keyboard.add(key_min)
	key_day = types.InlineKeyboardButton(text='Дни', callback_data='days')
	keyboard.add(key_day)
	bot.send_message(message.from_user.id, text=ed_iden, reply_markup=keyboard)

@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
	if call.data == 'hour':
		bot.register_next_step_handler(call,hour(call))
	elif call.data == "min":
		pass
def hour(call):
	bot.send_message(call.message.chat.id,'Введите целое количество часов.')
	kolvo_hour=call.message.text
	kolvo_hour=int(kolvo_hour)
	bot.send_message(call.message.chat.id, kolvo_hour)



bot.infinity_polling()

Я новичек в разработке телеграм ботов на питоне, нужна помощь. Как мне обработать данные о количестве часов. то есть пользователь сначала выбирает единицу времени а потом чтобы он выбрал количество,к примеру, часов.
вот ошибка
2022-04-06 20:44:18,466 (__init__.py:615 MainThread) ERROR - TeleBot: "Infinity polling exception: invalid literal for int() with base 10: 'Выберите единицу времени:'"
2022-04-06 20:44:18,470 (__init__.py:617 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
  File "C:\Users\Maxim\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\__init__.py", line 611, in infinity_polling
    self.polling(none_stop=True, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "C:\Users\Maxim\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\__init__.py", line 658, in polling
    self.__threaded_polling(non_stop, interval, timeout, long_polling_timeout, allowed_updates)
  File "C:\Users\Maxim\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\__init__.py", line 720, in __threaded_polling
    raise e
  File "C:\Users\Maxim\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\__init__.py", line 680, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\Maxim\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\util.py", line 135, in raise_exceptions
    raise self.exception_info
  File "C:\Users\Maxim\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\util.py", line 87, in run
    task(*args, **kwargs)
  File "C:\Users\Maxim\PycharmProjects\pythonProject\main.py", line 25, in callback_worker
    bot.register_next_step_handler(call,hour(call))
  File "C:\Users\Maxim\PycharmProjects\pythonProject\main.py", line 31, in hour
    kolvo_hour=int(kolvo_hour)
ValueError: invalid literal for int() with base 10: 'Выберите единицу времени:'
"
  • Вопрос задан
  • 179 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Очевидно, что содержимое call.message.text не может быть преобразовано в число.
Возможно есть лишнее буково-символьное содержание, возможно вообще является неподдерживаемым типом (list/dict, что-то еще (не знаком с конкретно этой либой)). Проверяйте что приходит. Если нужно - выделяйте нужную часть (split/slice или любым другим способом). Если виноват юзер, присылающий непотребства, валидируйте.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽