Ошибка в коде при запуске Telegram бота
Пишу бота под телеграм первый раз
Бот задает 3 вопроса юзеру и должен считать информацию из сообщения, получить след данные: years, days, minutes. Я получил данные, а вот на последнем этапе выдает ошибку в телеграме упс... или <function time at 0x02F1B0B8>. В командной строке все чисто, без ошибок
p.s пока не настроил кнопку "повторить" и лимиты и тд
Написал следующий код:
import config
import random
from telebot import types
bot = telebot.TeleBot(config.TOKEN)
@bot.message_handler(commands=['start'])
def welcome(message):
# keyboard
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("Повторить")
markup.add(item1)
bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный во благо.".format(message.from_user, bot.get_me()),
parse_mode='html', reply_markup=markup)
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Поехали", callback_data='go')
markup.add(item1)
bot.send_message(message.chat.id, 'Начать тест', reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
if call.message:
if call.data == 'go':
bot.send_message(call.message.chat.id, 'Вопрос1')
# remove inline buttons
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Начать тест",
reply_markup=None)
@bot.message_handler(content_types=['text'])
def years (message):
try:
chat_id = message.chat.id
years = message.text
msg = bot.send_message(message.chat.id, 'Вопрос2')
bot.register_next_step_handler(msg, days)
except Exception as e:
bot.reply_to(message, 'ууупс...')
def days(message):
try:
chat_id = message.chat.id
days = message.text
msg = bot.send_message(message.chat.id, 'Вопрос3')
bot.register_next_step_handler(msg, minutes)
except Exception as e:
bot.reply_to(message, 'ууупс...')
def minutes(message):
try:
chat_id = message.chat.id
minutes = message.text
time = int((years * 52) * (days * minutes) / 60)
bot.send_message(message.chat.id, time)
except Exception as e:
bot.reply_to(message, 'ууупс...')
bot.polling(none_stop=True)
Ответы (1 шт):
Чтобы посмотреть из за чего произошла ошибка, напишите везде где except Exception as e:
except Exception as e:
print(e)
Так вы увидите какая ошибка произошла.
И разделение на разные функции не так делается, любое входящее сообщение будет отрабатываться по первой функции def years (message):, вы должны отслеживать либо через базу данных либо еще как, на какой вопрос пришел ответ от пользователя и направлять выполнение кода в нужную функцию.