Python实现微信自动回复

 先安装 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()

更多信息请查看 博客 或者关注公众号:Z技术

  • 0
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值