python_datetime模块实现多任务每天定时触发_微信定时发送消息

Need

想要在服务器上部署微信机器人,实现定时发送消息

定时--使用datetime与time模块

每小时刷新一次,检测接下来的一个小时有没有任务,如果有,则创建线程等待发送

发送--使用wxpy

献上我的代码

from wxpy import *
import time
import datetime
from threading import Thread

THE_GROUP='GroupName'
raw={
	1:[20,21,0,'好'],#[hour,mins,day(optional),'msg']
	2:[20,22,0,'1'],
	3:[20,23,0,'1'],
}

#parse time
def parse(list_,now):
	# make it today
	year=now.year
	month=now.month
	day=now.day

	h=list_[0]
	m=list_[1]
	# if list_[2]:
		# day=list_[2]
	return datetime.datetime(year,month,day,h,m,0)
#parse time Done! 

#ItChat
# bot=Bot(cache_path=True)
#Linux
bot = Bot(console_qr=2,cache_path="wechat.pkl")

#make sure there is an active groupchat
print('warnning:#make sure there is an active groupchat')
print('OR ,you have added the groupchat into the Contacts!')
target=bot.groups().search(THE_GROUP)[0]

def send(msg,sec,i):
	print('Thread starts ,sleep %ds' %sec)
	time.sleep(sec)
	target.send(messages)
	print('No.%d mseeage sended !'%int(i))
	return


if __name__=='__main__':
	while True:
		
		print('Refreshing...')
		for i in raw:
			#Refresh now time
			now=datetime.datetime.now()
			target=parse(raw[i],now)
			delta=target-now
			if delta.days>=0:
				if delta.seconds<60*60:# triggered before 1 hour of eta				 				
					print('initialize thread %d'%i)
					eta=delta.seconds
					msg=raw[i][-1]

					t=Thread(target=send,args=(msg,eta,i))
					t.start()
				else:
					print('No.%d not fill'%i)
			else:
				print('No.%d not fill'%i)

		print('sleep 1 hour......')
		time.sleep(60*60)

啊!!!!!!!

万事俱备,东风不来。在服务器端登不上微信,在本地可以。我还在server上上传了pkl登录文件,但是因为ip和手机端地理位置的原因吧,我猜,被block了,一定是WeChat Group从中作梗。还是好好学习,多学点服务器端的知识吧。

posted @ 2020-03-01 21:50  Bravo_Jack  阅读(640)  评论(0编辑  收藏  举报