from telebot import TeleBot
bot = TeleBot('TOKEN (он тут есть, я его убрал, чтобы пользователи не видели:)')
from telebot import types
from math import sqrt
MENU_TEXT = """1. Решение линейных уравнений
2. Решение квадратных уравнений
3. Построение арифметической прогрессии
4. Арифметические операции с дробями"""
operation_drobi = """1. +
2. -
3. *
4. /
"""
@bot.message_handler(content_types=['text'])
def start(message):
if message.text == "Привет":
global markup
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
global btn1
btn1 = types.KeyboardButton("Главная")
markup.add(btn1)
bot.send_message(message.from_user.id, "✌️Приветствуем! Это решатор, который поможет вам с некоторыми математическими задачами. Если вы увидели, что бот не отвечает Вам, напишите админу: @aleksandr_twitt", reply_markup=markup)
bot.send_message(message.from_user.id, " Вы в главном блоке! Мы можем помочь вам со следующими пунктами:")
bot.send_message(message.from_user.id, MENU_TEXT)
bot.send_message(message.from_user.id, " Введите номер интересующего вас пункта!")
bot.register_next_step_handler(message, user_chose)
elif message.text == "/start":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Главная")
markup.add(btn1)
bot.send_message(message.from_user.id, "✌️Приветствуем! Это решатор, который поможет вам с некоторыми математическими задачами. Если вы увидели, что бот не отвечает Вам, напишите админу: @aleksandr_twitt", reply_markup=markup)
bot.send_message(message.from_user.id, " Вы в главном блоке! Мы можем помочь вам со следующими пунктами:")
bot.send_message(message.from_user.id, MENU_TEXT)
bot.send_message(message.from_user.id, " Введите номер интересующего вас пункта!")
bot.register_next_step_handler(message, user_chose)
elif message.text == "/help":
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Главная")
markup.add(btn1)
bot.send_message(message.from_user.id, " Сейчас Вы в главном блоке!", reply_markup=markup)
bot.send_message(message.from_user.id, "⬇️ Ниже мои команды :)⬇️")
bot.send_message(message.from_user.id, " Мы можем помочь вам со следующими пунктами:")
bot.send_message(message.from_user.id, MENU_TEXT)
bot.send_message(message.from_user.id, "✍Введите номер интересующего вас пункта! Если Вы обнаружили баг/проблему, напишите, пожалуйста разработчику: @aleksandr_twitt")
bot.register_next_step_handler(message, user_chose)
elif message.text == "Главная":
bot.send_message(message.from_user.id, " Вы в главном блоке!")
bot.send_message(message.from_user.id, "____________________")
bot.send_message(message.from_user.id, " Мы можем помочь вам со следующими пунктами:")
bot.send_message(message.from_user.id, MENU_TEXT)
bot.send_message(message.from_user.id, "✍ Введите номер интересующего вас пункта!")
bot.register_next_step_handler(message, user_chose)
else:
bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help или нажми ниже на кнопку 'Главная', чтобы перейти в главный блок")
# Вот сам центр: + пункт 1 удалил (кусок кода) для умещения текста
def user_chose(message):
try:
if message.text == '1':
bot.send_message(message.from_user.id, " Общий вид линейного уравнения: ax + b = 0")
bot.send_message(message.from_user.id, "✍ Введите значение коэффициента -- a")
bot.register_next_step_handler(message, liney)
elif message.text == '2':
bot.send_message(message.from_user.id, " Общий вид квадратного уравнения: ax^2 + bx + c = 0")
bot.send_message(message.from_user.id, "✍ Введите значение коэффициента -- a")
bot.register_next_step_handler(message, kvadrat_ur)
elif message.text == '3':
bot.send_message(message.from_user.id, "✍ Введите значение первого элемента прогрессии")
bot.register_next_step_handler(message, progres_elem_contr)
elif message.text == '4':
bot.send_message(message.from_user.id, "✍ Введите числитель первой дроби")
bot.register_next_step_handler(message, x1)
else:
global markup
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
global btn1
btn1 = types.KeyboardButton("Главная")
markup.add(btn1)
bot.send_message(message.from_user.id, 'Нет, это не цифра пункта! Пожалуйста, если хочешь, чтобы я решил пример, напиши -- "Главная", чтобы перейти обратно в главный блок!', reply_markup=markup)
except ValueError:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Главная")
markup.add(btn1)
bot.send_message(message.from_user.id, "ОШИБКА!!!", reply_markup=markup)
# УДАЛИЛИ КУСКИ кода с прогрессией (для умещения текста) , ситуация ниже аналогичная, т.е. пункт 4! 1 и 2 работают ок
def x1(message):
global x1
x1 = message.text
try:
x1 = int(x1)
bot.send_message(message.from_user.id, "✍️ Введите знаменатель первой дроби")
bot.register_next_step_handler(message, y1)
except ValueError:
bot.send_message(message.from_user.id, "ОШИБКА!!!")
def y1(message):
global y1
y1 = message.text
try:
y1 = int(y1)
bot.send_message(message.from_user.id, "✍️ Введите числитель второй дроби")
bot.register_next_step_handler(message, x2)
except ValueError:
bot.send_message(message.from_user.id, "ОШИБКА!!!")
def x2(message):
global x2
x2 = message.text
try:
x2 = int(x2)
bot.send_message(message.from_user.id, "✍️ Введите знаменатель первой дроби")
bot.register_next_step_handler(message, y2)
except ValueError:
bot.send_message(message.from_user.id, "ОШИБКА!!!")
def y2(message):
global y2
y2 = message.text
try:
y2 = int(y2)
bot.send_message(message.from_user.id, "Ваши дроби: {}/{} и {}/{}".format(x1, y1, x2, y2))
bot.send_message(message.from_user.id, "✍️ Введите номер операции, которую вы хотите применить к данным дробям")
bot.send_message(message.from_user.id, operation_drobi)
bot.register_next_step_handler(message, user_chose_operation)
except ValueError:
bot.send_message(message.from_user.id, "ОШИБКА!!!")
def user_chose_operation(message):
global user_chose_operation
user_chose_operation = message.text
try:
user_chose_operation = int(user_chose_operation)
if user_chose_operation == 1:
answer_x = x1 * y2 + x2 * y1
answer_y = y1 * y2
bot.send_message(message.from_user.id, "{}/{} + {}/{} = ...Считаю...".format(x1, y1, x2, y2))
elif user_chose_operation == 2:
answer_x = x1 * y2 - x2 * y1
answer_y = y1 * y2
bot.send_message(message.from_user.id, "{}/{} - {}/{} = ...Считаю...".format(x1, y1, x2, y2))
elif user_chose_operation == 3:
answer_x = x1 * x2
answer_y = y1 * y2
bot.send_message(message.from_user.id, "{}/{} * {}/{} = ...Считаю...".format(x1, y1, x2, y2))
elif user_chose_operation == 4:
answer_x = x1 * y2
answer_y = y1 * x2
bot.send_message(message.from_user.id, "{}/{} / {}/{} = ...Считаю...".format(x1, y1, x2, y2))
NOD = abs(answer_x)
NOD = int(NOD)
if abs(answer_y) < NOD:
NOD = abs(answer_y)
while not ((abs(answer_x) % NOD == 0) and abs(answer_y) % NOD == 0):
NOD -= 1
answer_x //= NOD
answer_y //= NOD
if answer_y == 1:
bot.send_message(message.from_user.id, " Ответ: {}".format(answer_x))
bot.send_message(message.from_user.id, " ✍Напишите сообщение 'Главная', чтобы перейти обратно в главный блок")
elif answer_y < answer_x:
cel = answer_x // answer_y
answer_x1 = answer_x - (cel * answer_y)
bot.send_message(message.from_user.id, " Ответ: {}|{}/{}".format(cel, answer_x1, answer_y))
bot.send_message(message.from_user.id, " ✍Напишите сообщение 'Главная', чтобы перейти обратно в главный блок")
else:
bot.send_message(message.from_user.id, " Ответ: {}/{}".format(answer_x, answer_y))
bot.send_message(message.from_user.id, " ✍Напишите сообщение 'Главная', чтобы перейти обратно в главный блок")
except ValueError:
bot.send_message(message.from_user.id, "ОШИБКА!!!")
bot.polling(none_stop=True, interval=0)