itchat 同时实现自动回复和定时任务
众所周知,itchat 实现自动回复只需要以下几行代码:
import itchat
@itchat.msg_register(itchat.content.TEXT, isFriendChat=True)
def text_reply(msg):
pass
itchat.auto_login()
itchat.run()
这只是被动的监听消息,不能主动发送内容。
另一方面,如果想设定一个定时任务,通常要用死循环,每隔一段时间判断当前时刻,如下为整点发送消息的代码:
while(True):
if (time.strftime("%M", time.localtime())=='00'):
itchat.send(msg, toUser)
time.sleep(60)
现在出现了矛盾,被动监听是个封装好的死循环,定时任务也是个死循环,怎么让他们同时实现呢?
自然想到要用多线程!
import _thread
import time
global login
def keep_run(app):
global login
assert(login==True)
app.run()
login = False
itchat.auto_login()
login = True
_thread.start_new_thread(keep_run,(itchat,))
while(login):
if (time.strftime("%M", time.localtime())=='00'):
itchat.send(msg, toUser)
time.sleep(60)
看完这段代码就明白了吧!