Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

виталя белый Ученик (95), открыт 2 недели назад
Привет всем разработчикам тг ботов. Я новичок и написал код, где тг бот будет калькулятором.
Но проблема в том, что тг бот читает и не отвечает, что делать? Библиотека телебот скачана.
 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()
1 ответ
Cogni Просветленный (40132) 2 недели назад
 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()
виталя белыйУченик (95) 2 недели назад
спасибо огромное! Выручил)
Похожие вопросы