废话不多说了,代码不多,简单粗暴,我就直接上代码:
1.自动回复
#coding=utf8 import itchat import time # 自动回复 # 封装好的装饰器,当接收到的消息是Text,即文字消息 @itchat.msg_register('Text') def text_reply(msg): # 当消息不是由自己发出的时候 if not msg['FromUserName'] == myUserName: # 发送一条提示给文件助手 itchat.send_msg(u"[%s]收到好友@%s 的信息:%s " % (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])), msg['User']['NickName'], msg['Text']), 'filehelper') # 回复给好友 return u'[自动回复]@%s您好!抱歉 我现在有事不在,一会再和您联系。 已经收到您的的信息:%s ' % (msg['Text']) if __name__ == '__main__': itchat.auto_login() # 获取自己的UserName myUserName = itchat.get_friends(update=True)[0]["UserName"] itchat.run()
2.好友签名分析
# coding:utf-8 import itchat import pandas import re import jieba itchat.login() friends =itchat.get_friends() df_friends = pandas.DataFrame(friends) Signatures = df_friends.Signature regex1 = re.compile('<span.*?</span>') #匹配表情 regex2 = re.compile('s{2,}')#匹配两个以上占位符。 Signatures = [regex2.sub(' ',regex1.sub('',signature,re.S)) for signature in Signatures] #用一个空格替换表情和多个空格。 Signatures = [signature for signature in Signatures if len(signature)>0] #去除空字符串 text = ' '.join(Signatures) wordlist = jieba.cut(text, cut_all=True) word_freq = {} for word in wordlist: if word in word_freq: word_freq[word] += 1 else: word_freq[word] = 1 freq_word = [] for word in word_freq.items(): freq_word.append((word)) freq_word.sort(key = lambda x: x[1], reverse = True) for word in freq_word: print(word)
3. 个人微信对接机器人
#coding=utf8 import requests import itchat KEY = 'add31270c85a4c348f5b60251b01fc34' def get_response(msg): # 这里我们就像在“3. 实现最简单的与图灵机器人的交互”中做的一样 # 构造了要发送给服务器的数据 apiUrl = 'http://www.tuling123.com/openapi/api' data = { 'key' : KEY, 'info' : msg, 'userid' : 'wechat-robot', } try: r = requests.post(apiUrl, data=data).json() # 字典的get方法在字典没有'text'值的时候会返回None而不会抛出异 return r.get('text') # 为了防止服务器没有正常响应导致程序异常退出,这里用try-except捕获了异常 # 如果服务器没能正常交互(返回非json或无法连接),那么就会进入下面的return except: # 将会返回一个None return # 这里是我们在“1. 实现微信消息的获取”中已经用到过的同样的注册方法 @itchat.msg_register(itchat.content.TEXT) def tuling_reply(msg): # 为了保证在图灵Key出现问题的时候仍旧可以回复,这里设置一个默认回复 defaultReply = 'I received: ' + msg['Text'] # 如果图灵Key出现问题,那么reply将会是None reply = get_response(msg['Text']) # a or b的意思是,如果a有内容,那么返回a,否则返回b # 有内容一般就是指非空或者非None,你可以用`if a: print('True')`来测试 return reply or defaultReply # 为了让实验过程更加方便(修改程序不用多次扫码),我们使用热启动 itchat.auto_login(hotReload=True) itchat.run()