Как можно перезаписывать переменную из функции счётчика и выводить пользователю значение переменной?

def start_process():  # Запуск Process
    p1 = Process(target=Str_schedule.start_schedule, args=()).start()

class Str_schedule():  # Class для работы с schedule

    def start_schedule():  # Запуск schedule
        # Параметры для schedule
        schedule.every(1).seconds.do(Str_schedule.func)


        while True:  # Запуск цикла
            schedule.run_pending()
            time.sleep(1)

    # Функции для выполнения заданий по времени
    class Func():
        def __init__(self):
            self.c = 0

        def __call__(self):
            self.c += 1
            global a
            a = self.c
            return self.c

    func = Func()

@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, str(a))


if __name__ == '__main__':
    start_process()
    try:
        bot.polling(none_stop=True)
    except:
        pass

Ответы (1 шт):

Автор решения: Super Sankovich

Спустя долгого поиска пути решения, выяснил следующее. Если ваш бот на heroku, то нет смысла пытаться делать счетчик, так как heroku каждые 6 часов уходит в сон и счетчик остановится. Если же вы решите сделать счетчик через записывание данных счетчика в файл или с помощью sqlite3 файла , вас ждет тоже неудача. Heroku так устроен, что после перезагрузки проекта, все данные сбрасываются к начальным состояниям. Поэтому единственное решение это использовать БД . Например, в heroku бесплатно можно использовать PostgreSQL. Но если не хотите настраивать БД, можете использовать бесплатный json-хостинг сервис - jsonstorage.net.

→ Ссылка