Проблема с тг-ботом на pytelegramapi: не работает функция и не используются команды бота
Пишу бота на pytelegramapi, но появилась одна проблема. Функция никак не может отработать и не получается использовать другие команды бота.
Подскажите, пожалуйста, в чём ошибка.
import math
import telebot
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=['start'])
def welcome(message):
bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы решать уравнения разных степеней. Для начала использования введите комманду /list".format(message.from_user, bot.get_me()), parse_mode='html')
@bot.message_handler(commands=['2'])
def welcome(message):
bot.send_message(message.chat.id, '''Для решения кубического уравнения типа: ax^2 + bx + c = 0, введите значения a, b и c в строчку, расставляя между ними знаки + и -!
Например для решения уравнения 5x^2 - 9x + 1
Введите 5-9+1
''')
@bot.message_handler(func=lambda message: True)
def stepen3(message):
text = message.text
k = text
m = k.find(' ')
number = m+1
a = int(k[:m])
k = k.replace(' ', '=', 1)
m = k.find(' ')
b = int(k[number:m])
number = m+1
k = k.replace(' ', '=', 1)
m = k.find(' ')
c = int(k[number:m])
number = m+1
k = k.replace(' ', '=', 1)
d = int(k[number:])
p = (3*a*c - b**2)/(3*a**2)
q = (2*b**3 - 9*a*b*c + 27*a**2*d)/(27*a**3)
discriminant = q**2/4 + p**3/27
if discriminant > 0:
r = -q/2 + math.sqrt(discriminant)
s = -q/2 - math.sqrt(discriminant)
u = r**(1/3) if r >= 0 else -(-r)**(1/3)
v = s**(1/3) if s >= 0 else -(-s)**(1/3)
x1 = u + v - b/(3*a)
x2 = -(u + v)/2 - b/(3*a) + (u - v)*math.sqrt(3)/2j
x3 = -(u + v)/2 - b/(3*a) - (u - v)*math.sqrt(3)/2j
bot.send_message(message.chat.id, 'Уравнение имеет 1 реальный корень и два комплексных')
bot.send_message(message.chat.id, 'Реальный корень')
bot.send_message(message.chat.id, x1)
bot.send_message(message.chat.id, 'Комплексные корни')
bot.send_message(message.chat.id, x1)
bot.send_message(message.chat.id, x2)
elif discriminant == 0:
if q >= 0:
x1 = -2*q**(1/3) - b/(3*a)
x2 = q**(1/3) - b/(3*a)
bot.send_message(message.chat.id, 'Уравнение имеет 3 реальных корня, но два из них совпадают')
bot.send_message(message.chat.id, x1)
bot.send_message(message.chat.id, x2)
bot.send_message(message.chat.id, x3)
else:
x1 = q**(1/3) - b/(3*a)
x2 = x3 = -(q**(1/3) + b/(3*a))/2
bot.send_message(message.chat.id, 'Уравнение имеет 3 реальных корня, но два из них совпадают')
bot.send_message(message.chat.id, x1)
bot.send_message(message.chat.id, x2)
bot.send_message(message.chat.id, x3)
else:
alpha = (-q/2 + discriminant**(1/2))**(1/3)
beta = (-q/2 - discriminant**(1/2))**(1/3)
x1 = alpha + beta - b/(3*a)
x2 = -(alpha + beta)/2 - b/(3*a) + (alpha - beta)*math.sqrt(3)/2j
x3 = -(alpha + beta)/2 - b/(3*a) - (alpha - beta)*math.sqrt(3)/2j
bot.send_message(message.chat.id, 'Уравнение имеет 3 реальных корня')
bot.send_message(message.chat.id, x1)
bot.send_message(message.chat.id, x2)
bot.send_message(message.chat.id, x3)
bot.polling(none_stop=True)
Источник: Stack Overflow на русском