Задать вопрос
@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: 'Выберите единицу времени:'
"
  • Вопрос задан
  • 166 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Очевидно, что содержимое call.message.text не может быть преобразовано в число.
Возможно есть лишнее буково-символьное содержание, возможно вообще является неподдерживаемым типом (list/dict, что-то еще (не знаком с конкретно этой либой)). Проверяйте что приходит. Если нужно - выделяйте нужную часть (split/slice или любым другим способом). Если виноват юзер, присылающий непотребства, валидируйте.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы