12行Python代码,自在随心应付微信拜年群发
Python
余博伦
知乎,内容君
1人收藏 661次学习

12行Python代码,自在随心应付微信拜年群发

原文地址:12行Python代码,自在随心应付微信拜年群发

12行Python代码,自在随心应付微信拜年群发

虽然这个时间点发布这样的文章有报复社会的嫌疑。不过我想这样的小技巧应该是每位学习编程的同学逢年过节必备的。
既然发出祝福的人可以从网上复制一条段子,甚至可能是随手复制七大姑八大姨群发给TA自己的段子,然后在微信群发助手全选联系人,往里面一粘贴点击发送就成功地搞定了所有过去的一年里爱过帮助过鼓励过同舟共济过的亲朋好友们。

那我为什么不可以用类似的方式去搞定企图用群发来搞定我的人呢?

不过我也不是批评群发祝福这种行为,敷衍确实是敷衍了一点,多少也算一份心意。

可是收到祝福的我就很尴尬了,假如我不回显得我不近人情,我要是手动回复了,很明显是我吃亏了,可能一整天的精力都要耗在回复祝福上。并且我也不愿意做那种群发祝福敷衍我的亲朋好友的那种人。

有没有既不浪费时间又能保持礼貌和客套的办法呢?

人生苦短,我用Python
好歹也算是学过两年编程的人,其实只需要12行Python代码,就可以让你的微信拥有自动回复功能了,并且还能够自动判断消息种类和内容,只回复新年祝福相关的消息。

首先确保你安装好了Python和Python的包管理工具pip

之后只需要再安装两个python库

pip install itchat pillow

然后再随便写这么几行代码

index.py

import itchat, time, re
from itchat.content import *

@itchat.msg_register([TEXT])
def text_reply(msg):
    match = re.search('年', msg['Text']).span()
    if match:
      itchat.send(('那我就祝你鸡年大吉吧'), msg['FromUserName'])

@itchat.msg_register([PICTURE, RECORDING, VIDEO, SHARING])
def other_reply(msg):
    itchat.send(('那我就祝你鸡年大吉吧'), msg['FromUserName'])

itchat.auto_login(enableCmdQR=True,hotReload=True)
itchat.run()

然后在命令行里运行

python index.py

用你自己的微信号扫描二维码(不是扫下面这个,是扫描你自己在命令行里生成的)

登录成功后会有如下提示

然后就大功告成啦(本示例在Win10+Python3.5.1环境下运行)

感谢知友们的支持,更新一个进阶版,可以自动获取好友的备注名,并且从祝福语API里随机抽取祝福词进行定制的回复,并且会记录回复过的好友,不会因为重复自动回复露馅。

P.S.requests库需要再安装一下

import itchat, time, requests, random
from itchat.content import *

replied = []

@itchat.msg_register([TEXT])
def text_reply(msg):
    if '年' in msg['Text'] and msg['FromUserName'] not in replied:
      sendGreeting(msg)

@itchat.msg_register([PICTURE, RECORDING, VIDEO, SHARING])
def other_reply(msg):
  if msg['FromUserName'] not in replyed:
    sendGreeting(msg)

def sendGreeting(msg):
  global replied
  friend = itchat.search_friends(userName=msg['FromUserName'])
  itchat.send((friend['RemarkName']+','+getRandomGreeting()), msg['FromUserName'])
  replied.append(msg['FromUserName'])

def getRandomGreeting():
  response = requests.get("http://www.xjihe.com/api/life/greetings?festival=新年&page=10", headers = {'apiKey':'sQS2ylErlfm9Ao2oNPqw6TqMYbJjbs4g'})
  results = response.json()['result']
  greeting = results[random.randrange(len(results))]['words']
  return greeting

itchat.auto_login(enableCmdQR=True,hotReload=True)
itchat.run()

效果预览

参考资料:

加入1KE学习俱乐部

1KE学习俱乐部是只针对1KE学员开放的私人俱乐部
标签:
Python