前段时间由于要管理微信群,基于itchat开发了一个简单的微信机器人

主要功能有:

  1. 图灵机器人功能
  2. 群聊昵称格式修改提示
  3. 消息防撤回功能
  4. 斗图功能

要开发一个基于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)

 

基于itchat的微信群聊小助手基础开发(一)的更多相关文章

  1. 如何用20行Python代码打造一个微信群聊助手?

    今天要教大家一个黑科技,20行代码实现自己定制的微信群聊助手,可以用来活跃群气氛,好多群主创建完群后,拉完一群人,之后就一片寂静,有个群聊助手,就可以帮忙活跃群里气氛,通过今天在自己的微信上有一大批好 ...

  2. 使用java做一个能赚钱的微信群聊机器人(2020年基于PC端协议最新可用版)

    前言 微信群机器人,主要用来管理群聊,提供类似天气查询.点歌.机器人聊天等用途. 由于微信将web端的协议封杀后,很多基于http协议的群聊机器人都失效了,所以这里使用基于PC端协议的插件来实现. 声 ...

  3. 2.转发。基于itchat的微信消息同步机器人

    原文:https://www.jianshu.com/p/7aeadca0c9bd# 看到了该网址有基于itchat的微信消息同步机器人,转过来继续研究.以下是转过来的: 最近 全栈数据工程师养成攻略 ...

  4. 基于itchat实现微信群消息同步机器人

    原始网址:http://www.jianshu.com/p/7aeadca0c9bd# 最近 全栈数据工程师养成攻略 的微信群已经将近500人,开了二群之后为了打通不同微信群之间的消息,花了点时间做了 ...

  5. 一个模仿微信群聊的H5页面

    开始 上半年小米Max发布的时候,做了一个在朋友圈传播的模仿微信的群聊界面H5页面:一群公司的大咖在群里聊小米Max,用户可以向大咖们提问,以此了解产品. 页面的主体是群聊对话,同时在对话中包含了很多 ...

  6. 基于websocket搭建简易群聊

    1.前端HTML <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&qu ...

  7. pinpoint实现告警推送至钉钉和微信群

    前言 在前面的文章中,我们学习了如何通过java实现将消息发送到钉钉.和将消息发送到微信群聊. 基于上述基础,我们今天来接入pinpoint的告警,发送到钉钉群. 实操前准备 开始之前,推荐阅读一下, ...

  8. 基于Qt的类QQ气泡聊天的界面开发

    近期在写IM 聊天界面,想设计出一个类似QQ气泡聊天的样式 使用了几种办法 1:使用Qt以下的QListview来实现QQ类似效果.差强人意 2:使用QWebview载入html css样式来完毕.发 ...

  9. 如何用python写个人专属群聊提醒小助手?

    前言 大家还记得教会父母玩微信是什么时候吗?父母学会后,我们的生活就发生了「质」的变化,父母也许会吐槽你的微信头像不好,要你换一个头像. 最近 pk哥 又被母后大人吐槽了,原因是亲戚微信群里某个亲戚生 ...

随机推荐

  1. node.js的安装及配置

    一.安装 直接在浏览器搜索node.js,在官网上下载(一般旧版的更加稳定,比如下载4.4.7版本) 点击DOWNLOADS 往下翻,点击Previous Release Windows下载msi(6 ...

  2. Servlet第六篇【Session介绍、API、生命周期、应用】

    什么是Session Session 是另一种记录浏览器状态的机制.不同的是Cookie保存在浏览器中,Session保存在服务器中.用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录 ...

  3. Struts第八篇【资源国际化、对比JSP的资源国际化】

    资源国际化 我们在学JSTL标签的时候就涉及到了资源国际化,,,但是呢,在JSP的章节我并没有写博文来讲解怎么弄-.一方面感觉JSP的资源国际化好麻烦,另一方面是感觉用的地方很少-..因此就没有深入去 ...

  4. 谈一谈synchronized关键词

    1.使用 java中的每一个对象都可以作为synchronized的锁进行代码同步,常见的形式 同步代码块锁是synchronized括号内的对象 普通成员方法上,锁是当前的对象,synchroniz ...

  5. Java学习笔记四---打包成双击可运行的jar文件

    写笔记四前的脑回路是这样的: 前面的学习笔记二,提到3个环境变量,其中java_home好理解,就是jdk安装路径:classpath指向类文件的搜索路径:path指向可执行程序的搜索路径.这里的类文 ...

  6. Java 简单实用方法二

    整理以前的笔记,在学习Java时候,经常会用到一些方法.虽然简单但是经常使用.因此做成笔记,方便以后查阅 这篇博文先说明构造和使用这些方法. 1,判断String类型数据是否包含中文 可以通过正则表达 ...

  7. 【 js 基础 】关于this

    this 关键字是 Javascript 中很特别的一个关键字,被自动定义在所有函数的作用域中.this提供了一种更优雅的方式隐式"传递"一个对象的引用.今天就来说说 this 的 ...

  8. epoll的ET和LT两种模式对比及注意事项

    ET模式: 因为ET模式只有从unavailable到available才会触发,所以 1.读事件:需要使用while循环读取完,一般是读到EAGAIN,也可以读到返回值小于缓冲区大小: 如果应用层读 ...

  9. Opengl4.5 中文手册—C

    索引 A      B    C      D     E     F     G H      I    J      K     L     M     N O      P    Q      ...

  10. Hibernate中的实体映射

     一.一对一映射  如人(Person)与身份证(IdCard) 的关系,即为一对一的关系,一个人只能有一张身份证,一张身份证只能属于某一个人,它们的关系图如下图所示: 在Person实体中添加一个属 ...