Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Код тг бота на пайтоне

Привет всем разработчикам тг ботов. Я новичок и написал код, где тг бот будет калькулятором.
Но проблема в том, что тг бот читает и не отвечает, что делать? Библиотека телебот скачана.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
 import telebot 
from telebot import types # для указание типов 
import math 
class users: 
    def __init__(self,id): 
        self.id = id 
        self.nickname = "" 
        self.email = "" 
        self.books = [] 
        self.selected_lst = 0 
        self.status = 0 
    users_list = {} 
 
TOKEN = 'тут мой токен' 
bot = telebot.TeleBot(TOKEN) 
@bot.message_handler(commands=['start']) 
def start(message): 
    print("?????") 
    bot.reply_to(message,'Здравствуйте. Это телеграмм бот-калькулятор, введите выражение.') 
 
 
def distr(a,b,c): 
    D = b**2 - 4*a*c 
    if D>0: 
        x1 = (-b + math.sqrt(D)) / (2*a) 
        x2 = (-b - math.sqrt(D)) / (2*a) 
        return f"Корни уравнения x1 ({x1}) и  x2 ({x2})" 
    elif D == 0: 
        x = -b / (2*a) 
        return f"уравнение имеет 1 корень {x}" 
    else: 
        return "корней нет" 
 
#если пользователь ввел уравнение то код сюда 
@bot.message_handler(func=lambda message: len(message.text.split()) == 3) 
@bot.message_handler(content_types=['text']) 
def calculator(message): 
    mes = message.text.split() 
    try: 
        vyr = {'+': int(mes[0]) + int(mes[2]), 
            '-': int(mes[0]) - int(mes[2]), 
            '/': int(mes[0]) / int(mes[2]), 
            '*': int(mes[0]) * int(mes[2]), 
            '**': int(mes[0]) ** int(mes[2]) 
            } 
        if mes[1] == "q": 
            vyr = {'q': distr(message,int(mes[0]),int(mes[2]),int(mes[4]))} 
     
        bot.reply_to(message.chat.id, vyr[mes[1]]) 
    except: 
        pass 
     
bot.infinity_polling() 
По дате
По рейтингу
Аватар пользователя
Просветленный
7мес
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
 import telebot 
import math 
 
TOKEN = 'ВАШ_ТОКЕН_ЗДЕСЬ' 
bot = telebot.TeleBot(TOKEN) 
 
class User: 
    def __init__(self, id): 
        self.id = id 
        self.nickname = "" 
        self.email = "" 
        self.books = [] 
        self.selected_lst = 0 
        self.status = 0 
 
users_list = {} 
 
@bot.message_handler(commands=['start']) 
def start(message): 
    print("Бот запущен") 
    bot.reply_to(message, 'Здравствуйте! Это телеграм-бот-калькулятор. Введите выражение (например: 2 + 2) или уравнение (например: q 1 -3 2).') 
 
def distr(a, b, c): 
    D = b**2 - 4*a*c 
    if D > 0: 
        x1 = (-b + math.sqrt(D)) / (2*a) 
        x2 = (-b - math.sqrt(D)) / (2*a) 
        return f"Корни уравнения: x1 = {x1}, x2 = {x2}" 
    elif D == 0: 
        x = -b / (2*a) 
        return f"Уравнение имеет один корень: x = {x}" 
    else: 
        return "Корней нет" 
 
@bot.message_handler(content_types=['text']) 
def calculator(message): 
    mes = message.text.strip().split() 
 
    # Обработка квадратного уравнения 
    if mes[0].lower() == 'q': 
        if len(mes) != 4: 
            bot.reply_to(message, "Для решения квадратного уравнения введите: q a b c") 
            return 
        try: 
            a = float(mes[1]) 
            b = float(mes[2]) 
            c = float(mes[3]) 
            result = distr(a, b, c) 
            bot.reply_to(message, result) 
        except ValueError: 
            bot.reply_to(message, "Пожалуйста, введите корректные числа.") 
        except Exception as e: 
            bot.reply_to(message, f"Произошла ошибка: {e}") 
        return 
 
    # Обработка простых арифметических выражений 
    if len(mes) != 3: 
        bot.reply_to(message, "Пожалуйста, введите выражение в формате: число оператор число (например: 2 + 2)") 
        return 
 
    num1, operator, num2 = mes 
 
    try: 
        num1 = float(num1) 
        num2 = float(num2) 
 
        if operator == '+': 
            result = num1 + num2 
        elif operator == '-': 
            result = num1 - num2 
        elif operator == '*': 
            result = num1 * num2 
        elif operator == '/': 
            if num2 == 0: 
                bot.reply_to(message, "Деление на ноль невозможно.") 
                return 
            result = num1 / num2 
        elif operator == '**': 
            result = num1 ** num2 
        else: 
            bot.reply_to(message, "Неизвестный оператор. Используйте +, -, *, / или **.") 
            return 
 
        bot.reply_to(message, f"Результат: {result}") 
    except ValueError: 
        bot.reply_to(message, "Пожалуйста, введите корректные числа.") 
    except Exception as e: 
        bot.reply_to(message, f"Произошла ошибка: {e}") 
 
bot.infinity_polling()