Как можно перезаписывать переменную из функции счётчика и выводить пользователю значение переменной?
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.