python使用itchat发送微信消息提醒
最近在学习一点python,先找了找有趣的应用,实际修改跑了一下提高兴趣程度。
找到itchat,它的简介是这样的:
“itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。
使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。
当然,该api的使用远不止一个机器人,更多的功能等着你来发现,比如这些。
该接口与公众号接口itchatmp共享类似的操作方式,学习一次掌握两个工具。
如今微信已经成为了个人社交的很大一部分,希望这个项目能够帮助你扩展你的个人的微信号、方便自己的生活。”
http://itchat.readthedocs.io/zh/latest/
itchat使用需要先下载安装,安装过程很简单,直接
pip install itchat
我安装的python3.6自带pip,如果没有pip的话我建议升级python。
在网上已经有不少itchat的应用,最简单的就是查找特定用户来发送微信消息。我结合另一个示范将消息扩展了一点:间隔特定时间给特定的好友发送微信消息提醒(久坐提醒?)
代码如下:
#-*-coding:utf8-*-
import itchat
import datetime, os, platform,time def timerfun(sched_time) :
flag = 0
while True:
now = datetime.datetime.now()
if now > sched_time and now < sched_time + datetime.timedelta(seconds=1) : # 因为时间秒之后的小数部分不一定相等,要标记一个范围判断
send_move()
time.sleep(1) # 每次判断间隔1s,避免多次触发事件
flag = 1
else :
#print('schedual time is {0}'.format(sched_time))
#print('now is {0}'.format(now))
if flag == 1 :
sched_time = sched_time + datetime.timedelta(hours=1) # 把目标时间增加一个小时,一个小时后触发再次执行
flag = 0 def send_move:
# nickname = input('please input your firends\' nickname : ' )
# 想给谁发信息,先查找到这个朋友,name后填微信备注即可,deepin测试成功
# users = itchat.search_friends(name=nickname)
users = itchat.search_friends(name='大壮') # 使用备注名来查找实际用户名
#获取好友全部信息,返回一个列表,列表内是一个字典
print(users)
#获取`UserName`,用于发送消息
userName = users[0]['UserName']
itchat.send("该起来动一下了!",toUserName = userName)
print('succeed') if __name__=='__main__':
itchat.auto_login(hotReload=True) # 首次扫描登录后后续自动登录
sched_time = datetime.datetime(2017,11,6,16,24,10) #设定初次触发事件的事件点
print('run the timer task at {0}'.format(sched_time))
timerfun(sched_time)
有几个地方调试了一下:
- 第9行判断时间是否到达指定时间处,因为now = datetime.datetime.now()返回的时间精确到了ms,所以直接拿精确到s的特定时间去比较会移植为False。所以我改用了判断是否在时间范围内。并且判断完后会用time.sleep(1)延时1s再次比较,避免多次命中或多次判断。
- 第17行内,每次时间判断满足指定时间范围时,将指定时间往后延一定时间,这里 + datetime.timedelta(hours=1)表示延后一个小时,达到每过一个小时触发一次send_move函数的目的
- 第33行,itchat.auto_login(hotReload=True)如注释说明的一样,避免每次都要扫描二维码登录,在登录一次之后“保持在线状态”
- 第35行,注意一下这里的print函数对sched_time字符串的使用方式。参考python手册:A datetime object is a single object containing all the information from a date object and a time object,为了按照一般时间格式打印输出,对sched_time进行了format格式化处理,我理解就是保持sched_time原本的时间形式不变,而按照字符串的方法进行处理。这里用{0}来表示格式化后的sched_time,让其能够以原来时间格式与前面待打印的字符串进行字符串拼接。
- 第32行,if __name__=='__main__'表示当前模块仅在自己运行时才运行后续的语句,否则当该模块被其他模块引用时,不会运行后续语句。每个模块都有__name__属性,当它等于'__main__'时,表示该模块被用户单独运行,可以执行特殊的操作。
这个程序正常情况下直接运行即可,第一次运行可能需要扫码登录一下。另外可以将第11行的判断间隔增大一些,减少程序运行消耗。
后续还是要继续学习python基础,只学习网上现成的实例的话,根基不稳,后续学习效率高不了。
python使用itchat发送微信消息提醒的更多相关文章
- 03: itchat发送微信消息
1.1 微信机器人自动回复消息 1.运行程序,会弹出二维码,扫描授权后即可实现自动回复信息 参考01 参考02 #coding=utf8 import itchat, time from itcha ...
- 全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)
不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...
- 【玩具】使用Python自动化发送微信消息进行订水
事情是这样的,我知道淘宝上有卖一种USB接口的大按钮,估计是给工厂或者医院之类的场景设计的,样子长这样: 然后我就一直挺想搞一个的,不为别的,就是玩,但是想来想去也没想到这玩意儿对我而言能有啥用途,就 ...
- 2.转发。基于itchat的微信消息同步机器人
原文:https://www.jianshu.com/p/7aeadca0c9bd# 看到了该网址有基于itchat的微信消息同步机器人,转过来继续研究.以下是转过来的: 最近 全栈数据工程师养成攻略 ...
- 使用itchat监控微信消息,从此不再为撤回烦恼
强大的Itchat itchat是一个开源的微信个人号接口,使用python封装接入微信网页版接口,通过调用itchat来登录微信网页版收发消息. 项目简介 - itchat 掌握itchat之后,只 ...
- python实现定时发送qq消息
因为生活中老是忘记各种事情,刚好又在学python,便突发奇想通过python实现提醒任务的功能(尽管TIM有定时功能),也可定时给好友.群.讨论组发送qq消息.其工作流程是:访问数据库提取最近计划— ...
- 【python】itchat登录微信获取好友签名并生成词云
在知乎上看到一篇关于如何使用itchat统计微信好友男女比例并使用plt生成柱状图以及获取微信好友签名并生成词云的文章https://zhuanlan.zhihu.com/p/36361397,感觉挺 ...
- PHP公众号开发给用户发微信消息提醒功能
最近做的一个项目,当有用户有资金到账或者成员变动时需要给他发一条微信消息提示.针对这个,开始想使用模板消息,但是刚注册的公众号申请消息模板需要几天时间申请,在时间不足下选择了使用客服消息接口,微信文档 ...
- 登录以及发送微信消息itchat 库
项目地址点这里 itchat itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. 使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人. 当然,该api的 ...
随机推荐
- Linux学习第一天————了解root用户和基本的shell命令
一.了解Linux中的root用户 1.1root用户 使用过MySQL的同学都知道MySQL中有一个变态的存在叫做超级管理员,他可以从操作任何一个数据库,那么在Linux中也有这么一个变态的存在他 ...
- xterm配置
最近转到i3wm桌面下, 发现调用xfce4-terminal有些慢,索性卸载掉一切所谓高级的终端,使用xterm,其实这个才是更牛的家伙. 安装 apt install xterm in i3-wm ...
- es6学习笔记-Proxy、Reflect、Promise
Proxy Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程. Proxy 可以理解成,在目标对象之前 ...
- Unity 查找泛型List中的相同与不同数据
Unity查找泛型集合中的不同数据 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...
- 自学java_Struts2框架
一.Struts2基础 1.Struts2是有Apache在Struts1和Webwork的基础上研发出的新一代MVC框架. 2.Struts2开发环境的搭建: 打开https://struts.ap ...
- centos安装实用总结
1.常用软件安装: yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop ...
- P1181 数列分段Section I
题目描述(跳转) 对于给定的一个长度为NN的正整数数列A_iAi,现要将其分成连续的若干段,并且每段和不超过MM(可以等于MM),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格式: 第1 ...
- centos 安装 crontab 和 简单的使用教程
crontab是一个非常好用的定时执行任务的程序.以下是操作方式 1. 安装 cron 的 主程序 : yum -y install vixie-cron 2. 安装 cron 守护进程的表格的程序 ...
- [IOS][已越狱]配合网易云音乐,使用Bridge快速免iTunes导入音乐到“音乐”
前置:已越狱IOS设备 工具表: Bridge{bigboss源,可以使用cydown以非官方服务器下载安装} 网易云音乐{Appstore} Filza{很多源都有} 网易云试听缓存路径 ...
- tf.Variable() 与tf.get_variable()的区别
每次调用 tf.Variable() 都会产生一个新的变量,变量名称是一个可选参数,运行命名相同,如果命名冲突会根据命名先后对名字进行处理, tf.get_variable()的变量名称是必填参数,t ...