赞
踩
先安装 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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。