@Byton_Shaggy

Хочу прописать арифметические действия телеграм боту. Как это сделать?

Я не понимаю как сделать функционал боту на Python(PyTelegramBotAPI), чтобы бот принимал одно число, потом второе после чего выводил результат. Найти хорошие гайды на эту тему я не смог, потому спрашиваю здесь. Заранее спасибо.
Вот сам код:

import telebot
from telebot import types

bot = telebot.TeleBot('MY TOKEN')

@bot.message_handler(commands=['start'])
def start(message) :
mess = f'Привет,{message.from_user.first_name}{message.from_user.last_name}, введи /calculate для начала расчёта'
bot.send_message(message.chat.id, mess)

@bot.message_handler(commands=['calculate'])
def calculate(message) :
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
btn1 = types.KeyboardButton('Умножение')
btn2 = types.KeyboardButton('Деление')
btn3 = types.KeyboardButton('Сложение')
btn4 = types.KeyboardButton('Вычитание')
markup.add(btn1, btn2, btn3, btn4)
bot.send_message(message.chat.id, 'Выбери нужное тебе действие', reply_markup=markup)
  • Вопрос задан
  • 250 просмотров
Решения вопроса 1
@dima20155
you don't choose c++. It chooses you
Сделайте handler для команды calculate (по аналогии с start).
Затем запросите число, действие, число.
Также вы можете просто после команды calculate попросить пользователя отправить выражение/уравнение, распознать его и прислать ответ.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Читай на тему finite state machine. Не знаю конкретно насчёт telebot, а другие библиотеки содержат эту фичу.
Но в целом идея несложная - ты должен для каждого пользователя помнить, на каком шаге он находится (ожидание первого числа, ожидание оператора, ожидание второго числа) и что он вводил раньше. Получив сообщение, смотришь по ID пользователя его шаг, и обрабатываешь текст сообщения соответственно. Можно это и вручную реализовать.

Хранение сведений можно для начала реализовать в простом словаре, если нет нужды, чтобы бот помнил происходящее после перезапуска.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы