как отключить остановку кода при ошибке telebot python
у меня есть код для бота telegram, который должен решать уравнения он прекрасно работает, но если ввести в него не уравнение, то он прекращает работу, и код нужно запускать заново. как это исправить?
import json
from sympy import symbols, solve, parse_expr, simplify
from collections.abc import Mapping
from sympy.parsing.sympy_parser import standard_transformations, implicit_multiplication_application
tok= ''
bot = telebot.TeleBot(tok)
transformations = (standard_transformations + (implicit_multiplication_application,))
def add_user(message,name):
file = open('id{}.json'.format(message.from_user.id), 'w')
file.write(str(message))
file.close()
@bot.message_handler(commands=['start'])
def intro(message):
name =message.from_user.first_name
str = f'Привет,{name} , этот бот решает уравнения и строит графикиヽ(´ー`)人(´∇`)人(`Д´)ノ'
bot.send_message(message.from_user.id, str)
add_user(message,message.from_user.id)
def map_operations(formula_str):
return formula_str.replace("^", "**").replace("=", "-")
def solving(formula):
f = parse_expr(map_operations(formula), transformations=transformations)
roots = solve(f)
string = 'x='
for el in roots:
string += str(el)
string += ';'
return string
@bot.message_handler(content_types=["text"])
def handle_text(message):
ur = str(message.text)
root= solving(ur)
bot.send_message(message.from_user.id,root)
print(ur, root)
@bot.message_handler(commands=['graph'])
def graph(message):
bot.send_message(message.from_user.id, 'Функция пока не работает T_T')
bot.polling(non_stop='True')```
Ответы (1 шт):
Автор решения: Runneso
→ Ссылка
Нужно сделать обработчик исключений, в рамках библиотеки telebot это делается так:
import telebot
tok = ''
class ExceptionHandler(telebot.ExceptionHandler):
def handle(self, exception):
print(exception)
return True
bot = telebot.TeleBot(tok, exception_handler=ExceptionHandler())
Это также может быть полезным https://github.com/eternnoir/pyTelegramBotAPI/discussions/1939