先安装 itchat 、requests、itchat-uos
itchat-uos主要解决微信提示禁止网页登录导致登录失败的问题
以下有三种可玩方式:
1.回复好友
# 源代码如下:
# wechat autoreply
import itchat
import requests
import re
# 抓取网页
def getHtmlText(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
# 自动回复
# 封装好的装饰器,当接收到的消息是Text,即文字消息
@itchat.msg_register(['Text','Map', 'Card', 'Note', 'Sharing', 'Picture'])
def text_reply(msg):
# 回复给好友
url = "http://www.tuling123.com/openapi/api?key=图灵apikey&info="
url = url + msg['Text']
html = getHtmlText(url)
message = re.findall(r'\"text\"\:\".*?\"',html)
reply = eval(message[0].split(':')[1]) + "--from zorro robot auto reply"
return reply
if __name__ == '__main__':
itchat.auto_login()
# 获取自己的UserName
friends = itchat.get_friends(update=True)[0:]
Name = {}
Nic = []
User = []
for i in range(len(friends)):
Nic.append(friends[i]["NickName"])
User.append(friends[i]["UserName"])
for i in range(len(friends)):
Name[Nic[i]] = User[i]
itchat.run()
2.群回复
import itchat
import requests
import re
# 抓取网页
def getHtmlText(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
# 自动回复
# 封装好的装饰器,当接收到的消息是Text,即文字消息
# @itchat.msg_register(['Text','Map', 'Card', 'Note', 'Sharing', 'Picture'])
def text_reply(msg):
# 回复给好友
url = "http://www.tuling123.com/openapi/api?key=7a924ffc67374b939670e5c1c9247cd1&info="
url = url + msg['Text']
html = getHtmlText(url)
message = re.findall(r'\"text\"\:\".*?\"',html)
reply = eval(message[0].split(':')[1]) + "--from zorro robot auto reply"
return reply
@itchat.msg_register([itchat.content.TEXT], isGroupChat=True)
def print_group_msg(msg):
gname='内部舆情风向群'
context=text_reply(msg)
print(context)
myroom = itchat.get_chatrooms(update=True) # 获取所有群的相关信息,update=True表示信息更新
myroom = itchat.search_chatrooms(name=gname) # 传入指定群名进行搜索,之所以搜索,是因为群员的名称信息也在里面
for room in myroom:
print(room)
if room['NickName'] == gname:
username = room['UserName']
itchat.send_msg(context, username)
# print(room['NickName'])
# if msg['IsAt']: #['IsAt']这个标签是TRUE说明有人@我
# username = room['UserName'] #获取该群聊的UserName
# print(username)
# itchat.send_msg(context, username) #发送信息
# elif '所有人' in msg['Text']: #判断是否发送的是群公告
# username = room['UserName']
# itchat.send_msg(context, username)
else:
print('No groups found')
itchat.auto_login() # 登录微信
itchat.run()
3.使用微软小冰自动回复指定群消息
import itchat
import requests
import re
# //监控公众号消息
@itchat.msg_register(itchat.content.TEXT, isMpChat=True)#isMpChat=True表明只监听公众号信息,注意小冰是个公众号
def reply_msg(msg):
print("小冰回复:"+str(msg['Content']))#将小冰的消息显示出来
# print(msg)
name=msg['User']['NickName']
if(name=="AI小冰"):
reply_to_group(msg['Content'])
# itchat.send_msg(msg['Content'], gname)#将这个消息发送给原来的那个人
# //回复群消息
def reply_to_group(context):
myroom = itchat.search_chatrooms(name=gname) # 传入指定群名进行搜索,之所以搜索,是因为群员的名称信息也在里面
# print(room)
for room in myroom:
if room['NickName'] == gname:
username = room['UserName']
itchat.send_msg(context+"-from bot", username)
print("已转发到群"+str(gname))
# //监控群消息
@itchat.msg_register([itchat.content.TEXT], isGroupChat=True)
def print_group_msg(msg):
global gname
gname='指定的群名称'
print("收到:"+str(msg['Text']))
mps = itchat.search_mps(name='小冰')#搜索小冰
if len(mps) > 0:
# print(mps[0]['NickName'])
itchat.send_msg(msg['Content'], toUserName=mps[0]['UserName'])#给小冰发消息
# itchat.auto_login(hotReload=True) # 登录微信
itchat.auto_login() # 登录微信
itchat.run()