我试图并排运行两个功能。
基本上,我的代码中有一部分设置和变量(在一个类中)为False,这反过来应该禁止执行一个函数。
但是,它可以再次设置为True,然后在给定时间执行一个过程。所以我需要一种检查变量状态的方法。
我把它放在一个单独的函数中,然后将它与我的main函数一起调用。我发现如果我把它们放在一起。 while True阻止函数的其余部分执行。
telegram_bot.py
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import logging
import os
from alarm import Alarm
import time
alarmpi = Alarm()
def alarmenable(bot, update):
if alarmpi.alarm_enabled:
update.message.reply_text("Alarm is already enabled")
else:
update.message.reply_text("Alarm has been enabled")
alarmpi.alarm_enabled = True
def alarmdisable(bot, update):
if alarmpi.alarm_enabled:
alarmpi.alarm_enabled = False
#alarmpi.alarm_enabled = False
update.message.reply_text("Alarm has been disabled")
else:
update.message.reply_text("Alarm is already disabled")
print('From sub :' + str(Alarm.alarm_enabled))
def main():
<code to start the bot and then go into 'idle mode'.. always listening for commamnds>
def timer():
while True:
if alarmpi.alarm_enabled:
print('We are live!')
else:
print('Hibernating'_
if __name__ == '__main__':
main()
timer()
alarm.py
class Alarm:
def __init__(self):
self.alarmpi = None
self.alarm_playing = False
self.alarm_time = '16:10'
self.alarm_enabled = True
def alarm_toggle(self, status):
self.alarm_enabled = status
return self.alarm_enabled
我尝试使用Threading和Multiprocess模块在telegram_bot文件中运行这两个函数。但是这些功能并不共享同一个类实例。
答案 0 :(得分:0)
解决了..将while循环移到我的类中并在main()函数中调用它。