Как передать данный из функции "calc_kall" в переменную sum_kall - Tg bot
Я хочу запоминать числа которые вводят в телеграмм боте, и складывать их в переменную sum_kall, чтобы потом выводить сумму чисел который ввел пользователь, но почему-то когда вызывается функция bot.message_handler sum_kall обнуляется
from telebot import TeleBot
sum_kall = 0
bot = TeleBot(":")
def calc_kall(message):
message_kall_info = message.text
count_kall = 0
if message_kall_info.isdigit() == True:
count_kall += int(message_kall_info)
bot.send_message(message.chat.id, f"{count_kall}")
else:
bot.send_message(message.chat.id, "Вы ввели не цифру")
return count_kall
@bot.message_handler(content_types=['text'])
def send_kall_status(message, sum_kall):
sum_kall += calc_kall(message)
bot.send_message(message.chat.id, f"{sum_kall}")
return sum_kall
bot.polling()
Ответы (1 шт):
Автор решения: NTA
→ Ссылка
Лучше хранить переменные внутри класса, или через global
(но лучше все же через классы). Если нужно сохранять данные которые останутся после перезапуска бота, используйте базу данных (например, sqlite3
)
from telebot import TeleBot
class Data: #создание класса с переменными для хранения
kall = 0 #сюда можно добавлять переменные и использовать их как data.[имя переменной]
data = Data() #создание объекта класса
bot = TeleBot(":")
def calc_kall(message):
message_kall_info = message.text
if message_kall_info.isdigit() == True:
count_kall = int(message_kall_info)
bot.send_message(message.chat.id, f"{count_kall}")
else:
count_kall = 0
bot.send_message(message.chat.id, "Вы ввели не цифру")
return count_kall
@bot.message_handler(content_types=['text'])
def send_kall_status(message):
data.kall += calc_kall(message) #вмесо sum_kall используем data.kall которые находится внутри класса
bot.send_message(message.chat.id, f"{data.kall}")
return data.kall
bot.polling()