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

Как сделать умножение с данными, полученными от пользователя TELEBOT Python.

Александр Павлович Ученик (104), на голосовании 1 месяц назад
Допустим идет сообщение от бота: введите число товара: вводится с клавы число, потом бот должен 18 умножить на мое число и выдать цену за всю покупку, больше вопрос у меня по тому, как все таки записать ввод моего числа в какую-либо переменную для дальнейшего использования!
Спасибки!
Голосование за лучший ответ
Maxim Kravchenko Ученик (172) 2 месяца назад
 import telebot

bot = telebot.TeleBot('YOUR-TOKEN')

@bot.message_handler(content_types=['text']) #Декоратор для работы с сообщением
def handler(message):
bot.send_message(message.chat.id, f'Ваше число * 18 = {int(message.text) * 18}') #Посылаем сообщение, умножающее число пользователя на 18

bot.polling(non_stop=True) #Для безостановочной работы бота. Можно использовать метод infinite_polling

Но тут по-хорошему надо еще проверки делать, чтобы не умножать строки на число
Maxim KravchenkoУченик (172) 2 месяца назад
то есть, message - это и есть сообщение от пользователя. Декоратор позволяет работать с ним, отвечать на него
Maxim Kravchenko, @bot.message_handler(content_types=['text']) def handler(message): bot.send_message(message.from_ user.id , message) Отправит всё подробно, оттуда и сможешь взять, то что тебе нужно message.text - это текст
Владимир Чуркин Ученик (220) 2 месяца назад
Если я правильно понял, вы библиотеку telebot юзаете. Смотрите, если в сообщении никакого текста кроме числа быть не должно, то можете так сделать:

@bot.message_handler() #В скобках оставляешь пустое пространство
def input_int(message):
global your_int #Вместо your_int во всем коде пишете имя переменной с числом 18, ну или просто число 18 и без этой строчки
text = int(message.text)
bot.send_message(message.chat.id, str(text * your_int))
#Вместо bot имя переменной с ботом

Если сначала в сообщении должна идти комманда (например, /buy), то используйте тоже самое, только пишете
@bot.message_handler(command=[ " Название комманды без / " ]) #Без лишних пробелов

И там, где вы используйте message.text нужно использовать срезы, чтобы получить только число, перед тем как использовать int()
Maxim KravchenkoУченик (172) 2 месяца назад
как раз-таки 18 и есть то самое число, на которое нужно умножать число от пользователя. То есть мы именно с сообщением работаем
Владимир ЧуркинУченик (220) 2 месяца назад
Ну просто лучше его в переменную запихать, чтобы в случае чего удобнее менять было
Maxim Kravchenko Ученик (172) Владимир Чуркин, тогда будет проще спрашивать еще второе число, на которое нужно умножать. А то прийдется останавливать бота и перезаписывать. Можно сразу в обработчике еще перезаписывать
Maxim KravchenkoУченик (172) 2 месяца назад
а. Одно и то же сказал
Похожие вопросы