Привет!
Есть программа, для которой я создал телеграм-бота. Через него я хочу с помощью команды запускать и отключать программу.
Сейчас получается так, что она только запускается, а остановить ее, по факту, не получается. Несмотря на отправку команды /deactivate работа программы продолжается.
Может быть я что-то с задержками напутал? Или еще с чем-то, не могу понять.
Вот код телеграм-бота, он принимает от меня команды и по идее должен их выполнять (/activate срабатывает, а /deactivate нет):
from telegram.ext import Updater, CommandHandler
from telegram_features.telegram_private_keys import telegram_api_key,tel_id
from telegram_features.telegram_notification import send_notification
from main import init_program
from functools import wraps
def restricted(func):
@wraps(func)
def wrapped(bot, update, *args, **kwargs):
user_id = update.effective_user.id
if user_id != tel_id:
send_notification('Неавторизованный доступ с ID: {}.'.format(user_id))
return
return func(bot, update, *args, **kwargs)
return wrapped
@restricted
def activate_program_bot(bot, update, job_queue, user_data):
program_job = job_queue.run_repeating(init_program, 300, first=1)
user_data['program_job'] = program_job
send_notification('программа начала работу')
@restricted
def deactivate_program_bot(bot, update, user_data):
program_job = user_data.get('program_job')
if program_job:
program_job.schedule_removal()
send_notification('программа завершила работу')
send_notification('программа видимо не завершила работу')
def main():
updater = Updater(telegram_api_key)
dp = updater.dispatcher
dp.add_handler(CommandHandler("activate", activate_program_bot, pass_job_queue=True, pass_user_data=True))
dp.add_handler(CommandHandler("deactivate", deactivate_program_bot, pass_user_data=True))
updater.start_polling(timeout=1000)
if __name__ == '__main__':
main()