Как передать данный из функции "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()
→ Ссылка