最近在学习一点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)

有几个地方调试了一下:

  1. 第9行判断时间是否到达指定时间处,因为now = datetime.datetime.now()返回的时间精确到了ms,所以直接拿精确到s的特定时间去比较会移植为False。所以我改用了判断是否在时间范围内。并且判断完后会用time.sleep(1)延时1s再次比较,避免多次命中或多次判断。
  2. 第17行内,每次时间判断满足指定时间范围时,将指定时间往后延一定时间,这里 + datetime.timedelta(hours=1)表示延后一个小时,达到每过一个小时触发一次send_move函数的目的
  3. 第33行,itchat.auto_login(hotReload=True)如注释说明的一样,避免每次都要扫描二维码登录,在登录一次之后“保持在线状态”
  4. 第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,让其能够以原来时间格式与前面待打印的字符串进行字符串拼接。
  5. 第32行,if __name__=='__main__'表示当前模块仅在自己运行时才运行后续的语句,否则当该模块被其他模块引用时,不会运行后续语句。每个模块都有__name__属性,当它等于'__main__'时,表示该模块被用户单独运行,可以执行特殊的操作。

这个程序正常情况下直接运行即可,第一次运行可能需要扫码登录一下。另外可以将第11行的判断间隔增大一些,减少程序运行消耗。

后续还是要继续学习python基础,只学习网上现成的实例的话,根基不稳,后续学习效率高不了。

python使用itchat发送微信消息提醒的更多相关文章

  1. 03: itchat发送微信消息

    1.1 微信机器人自动回复消息 1.运行程序,会弹出二维码,扫描授权后即可实现自动回复信息 参考01  参考02 #coding=utf8 import itchat, time from itcha ...

  2. 全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)

    不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...

  3. 【玩具】使用Python自动化发送微信消息进行订水

    事情是这样的,我知道淘宝上有卖一种USB接口的大按钮,估计是给工厂或者医院之类的场景设计的,样子长这样: 然后我就一直挺想搞一个的,不为别的,就是玩,但是想来想去也没想到这玩意儿对我而言能有啥用途,就 ...

  4. 2.转发。基于itchat的微信消息同步机器人

    原文:https://www.jianshu.com/p/7aeadca0c9bd# 看到了该网址有基于itchat的微信消息同步机器人,转过来继续研究.以下是转过来的: 最近 全栈数据工程师养成攻略 ...

  5. 使用itchat监控微信消息,从此不再为撤回烦恼

    强大的Itchat itchat是一个开源的微信个人号接口,使用python封装接入微信网页版接口,通过调用itchat来登录微信网页版收发消息. 项目简介 - itchat 掌握itchat之后,只 ...

  6. python实现定时发送qq消息

    因为生活中老是忘记各种事情,刚好又在学python,便突发奇想通过python实现提醒任务的功能(尽管TIM有定时功能),也可定时给好友.群.讨论组发送qq消息.其工作流程是:访问数据库提取最近计划— ...

  7. 【python】itchat登录微信获取好友签名并生成词云

    在知乎上看到一篇关于如何使用itchat统计微信好友男女比例并使用plt生成柱状图以及获取微信好友签名并生成词云的文章https://zhuanlan.zhihu.com/p/36361397,感觉挺 ...

  8. PHP公众号开发给用户发微信消息提醒功能

    最近做的一个项目,当有用户有资金到账或者成员变动时需要给他发一条微信消息提示.针对这个,开始想使用模板消息,但是刚注册的公众号申请消息模板需要几天时间申请,在时间不足下选择了使用客服消息接口,微信文档 ...

  9. 登录以及发送微信消息itchat 库

    项目地址点这里 itchat   itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. 使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人. 当然,该api的 ...

随机推荐

  1. web h5常用代码总结

    注意:本文原创,转载请说明出处 1.使图片和文字水平居中,给图片css样式:vertical-align: middle;vertical-align:middle的时候,是该元素的中心对齐周围元素的 ...

  2. es6去重

    // set是一种新的数据结构,它可以接收一个数组或者是类数组对象,自动去重其中的重复项目. var arr=[9,9,"丸子","丸子",undefined, ...

  3. hdu 1518 BFS

    Given a set of sticks of various lengths, is it possible to join them end-to-end to form a square? I ...

  4. viewport定义,弹性布局,响应式布局及LESS和SASS框架应用

    一,移动端宽度设置 viewport视图窗口,<meta name="viewport" content="width=device-width,initial-s ...

  5. PowerShell在激活virtualenv虚拟环境时禁止运行的脚本的解决办法

    问题描述 在使用Django开发网站项目时,为了便于修改.维护以及项目部署,使用了virtualenv虚拟环境.这个工具允许你维护多个分离的Python环境,每个都具有它自己的库和包的命名空间.这种情 ...

  6. the status bar issue of react-native Modal on Android ( RN v0.57.0)

    Problem: When use Modal in react-native, the status bar is not included if you make a full-screen ma ...

  7. 20164301 Exp4 恶意代码分析

    Exp4 恶意代码分析 实验目标 1.是监控你自己系统的运行状态,看有没有可疑的程序在运行.  2.是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinte ...

  8. 企业SQL笔试

    Student(SID, Sname, Sage, Ssex) 学生表        Course(CID, Cname, TID) 课程表        SC(SID, CID, score) 成绩 ...

  9. VS资源收藏<持续更新中>

    1.VS插件下载地址:https://marketplace.visualstudio.com/vs

  10. 用 EPWA 写一个 图片播放器 PicturePlayer

    用 EPWA 写一个 图片播放器  PicturePlayer  . 有关 EPWA,见 <我发起并创立了一个 EPWA 的 开源项目>   https://www.cnblogs.com ...