简介:输入当天日程和特定回复,在收到新消息时判断,如果收到的是关键字,就发送特定回复,否则判断本地时间是否有日程,如果有,回复相应日程信息,无则回复设定信息。
注意:写着玩的,功能很局限,仅供学习。日程时间只弄了整点到整点的,而且时间重叠时,重叠时间段中最先输入的有效。
注意,原理是不考虑同时收到两个人的消息的情况下,新收到消息的聊天会到第一位,注意新消息并不区分本人和对方。所以,如果微信消息有置顶聊天,那么程序只能对置顶的聊天有效,否则全有效。
使用时先按右上角按钮将微信置顶并切换到聊天页,注意输入格式,先输入一个数字表示当天有几个日程,后每一行输入一项日程,两个以空格隔开的数字表示日程的起始时间,然后一段话是这个时间段的回复。日程输入完毕,输入特定的一段话,这段话在收到关键字后回复(默认关键字是TD)。
注意,程序进入检测状态后,不断定位鼠标和不停切换焦点到微信,影响其他任何操作!长按ESC关闭程序!
[Python] 纯文本查看 复制代码 from uiautomation import WindowControl
from _datetime import datetime
import keyboard
wx = WindowControl(name='微信')
if (wx.Name != '微信'):
print('请将微信置顶后再运行!\n')
exit()
else:
print(wx)
wx.SwitchToThisWindow()
hh = wx.ListControl(name='会话')
print(hh)
n = int(input('您今天共有几项日程?\n'))
data = {}
print('请输入您的各项日程,先输入两个整数表示时间,后输入一段文字描述日程,均使用空格隔开,24小时制')
for i in range(n):
t = input().split()
data[(t[0], t[1])] = t[2]
# print(data)
ms=input('请您输入TD激活的应答:')
print(datetime.now().strftime("%H"))
lm=wx.Name
f=False
while True:
if keyboard.is_pressed('esc'):
break # 退出循环
# quit() # 退出程序
we=hh.TextControl(searchDepth=5)
while not we.Exists(0):
pass
if we.Name:
we.Click(simulateMove=False)
tt=datetime.now().strftime("%H")
flag=True
m = wx.ListControl(Name='消息').GetChildren()[-1].Name
print(m)
if(m=='TD'):
wx.SendKeys(ms, waitTime=1)
m = ms
wx.SendKeys('{Enter}', waitTime=0)
elif f:
if m != lm:
for (x,y) in data:
if x<=tt<y:
wx.SendKeys(data[(x,y)],waitTime=1)
m=data[(x,y)]
wx.SendKeys('{Enter}', waitTime=0)
flag=False
break
if flag:
wx.SendKeys('正忙(自动回复)', waitTime=1)
m='正忙(自动回复)'
wx.SendKeys('{Enter}', waitTime=500)
we.Click(x=100, y=300)
f=True
lm=m
print('lm=',lm)
|