
前段时间由于要管理微信群,基于itchat开发了一个简单的微信机器人
主要功能有:
- 图灵机器人功能
- 群聊昵称格式修改提示
- 消息防撤回功能
- 斗图功能
要开发一个基于itchat的最基本的聊天机器人,在github上作者已经给出基本的操作,本博文只对附加的功能进行说明总结。
确保已经了解itchat的基本操作,先对功能1和功能2进行说明:
1.图灵机器人功能
该功能也是最基础的功能之一,itchat的基础案例也有相关例子。
图灵机器人简单而言就是以一定的规则给图灵的服务器发送数据包,图灵的服务器会以一定的规则给你返回数据包,就可以实现对话了。
首先先要去 图灵机器人 注册一个key,来告诉图灵服务器你有权和他对话
以下是代码:
def get_response(msg):
apiUrl = 'http://www.tuling123.com/openapi/api'
data = {
'key' : KEY,#这里是你申请的key
'info' : msg,
'userid' : 'wechat-robot',
}
try:
r = requests.post(apiUrl, data=data).json()
#return r.get('text')
code = r['code']
if code == 100000:
reply = r['text']
elif code == 200000:
reply = r['text'] + r['url']
elif code == 302000:
list = r['list']
reply = r['text']
for i in list:
reply = reply + ' ,' + i['article'] + i['detailurl'] + '\n'
return reply
except:
return
2.微信群昵称格式修改提示
首先,先写一个判断函数,用正则表达式匹配你想要的格式。
如果不符合此格式,则返回一条 “ @不符合格式的昵称 请尽快按照如:16-xx-XXX的格式修改备注,谢谢合作”
‘@%s\u2005’ 中的 ‘\u2005’ 是微信@的固定格式
def groupNameIsOK(name,msg):
str=u'请尽快按照如:16-xx-XXX的格式修改备注,谢谢合作'
if re.search(ur"\d\d(\-|\-|)\S*(\-|\-|)\S*",name)==None:
msg.user.send(u'@%s\u2005%s' % (
msg.actualNickName, str))
返回一条信息肯定要有 @那个昵称不符的吧?那接下来就要找到这个昵称,也是用正则去匹配,然后返回他的昵称
def groupPeople(msg):
T=re.search("\@\@(.*?)",msg['FromUserName'])
if T!=None:
return msg['ActualNickName']
else:
return None
最后把它们整合,第二个功能搞定
if groupPeople(msg)!=None:
msg_from=groupPeople(msg)
groupNameIsOK(msg_from,msg)