一、

最近用在学习golang,写了个小工具练练手。通过golang模拟微信网页端,接收微信服务器的消息并定制。可接入图灵机器人的api实现一个微信机器人的小玩具,当然了,可以有更多更好玩的玩法。

二、 

    地址: https://github.com/Orlion/Gochat

Gochat

一个Go微信机器人包

特点

  1. 灵活。在微信从登录到开始同步服务器消息的过程中的各个节点触发事件,从而通过注册时间监听器就可以灵活的实现很多功能。
  2. 失败重新登录。可以通过注册同步失败的事件重新调用Login()方法来重新登录,从而达到失败自动重新登录, 也可以调用pushlogin的接口免扫码来登录。

Demo

有部分伪代码,不能直接运行

package demo

import (
"gochat"
"os"
"fmt"
) func main() {
// new 一个微信实例
weChat := gochat.NewWeChat("storage.json", os.Stdout)
// 注册事件监听
RegListener(weChat)
// 登录
err := weChat.Login()
if err != nil {
fmt.Println(err.Error())
}
// Run 开始监听微信服务器
err = weChat.Run()
if err != nil {
fmt.Println(err.Error())
}
} // 注册事件监听器
func RegListener(weChat *gochat.WeChat) { // 注册生成Uuid事件监听器
weChat.SetListener(gochat.GEN_UUID_EVENT, func(event gochat.Event){
eventData, ok := event.Data.(gochat.GenUuidEventData)
if ok {
sendEmail("Uuid=" + eventData.Uuid)
}
}) // 注册已扫码事件监听器
weChat.SetListener(gochat.SCAN_CODE_EVENT, func(event gochat.Event){
eventData, ok := event.Data.(gochat.ScanCodeEventData)
if ok {
sendEmail("UserAvatar=" + eventData.UserAvatar)
}
}) // 注册授权登录的事件监听器
weChat.SetListener(gochat.CONFIRM_AUTH_EVENT, func(event gochat.Event){
eventData, ok := event.Data.(gochat.ConfirmAuthEventData)
if ok {
sendEmail("RedirectUrl=" + eventData.RedirectUrl)
}
}) // 注册已登录事件监听器
weChat.SetListener(gochat.LOGIN_EVENT, func(event gochat.Event){
eventData, ok := event.Data.(gochat.LoginEventData)
if ok {
sendEmail("DeviceID=" + eventData.DeviceID)
}
}) // 注册初始化完成事件监听器
weChat.SetListener(gochat.INIT_EVENT, func(event gochat.Event){
eventData, ok := event.Data.(gochat.InitEventData)
if ok {
sendEmail("MemberCount=" + eventData.Me.MemberCount)
}
}) // 注册联系人初始化完成事件监听器
weChat.SetListener(gochat.CONTACTS_INIT_EVENT, func(event gochat.Event){
eventData, ok := event.Data.(gochat.ContactsInitEventData)
if ok {
sendEmail("ContactsCount=" + eventData.ContactsCount)
}
}) // 注册同步微信失败事件监听器
weChat.SetListener(gochat.LISTEN_FAILED_EVENT, func(event gochat.Event){
eventData, ok := event.Data.(gochat.ListenFailedEventData)
if ok {
sendEmail("ListenFailedCount=" + eventData.ListenFailedCount)
if (eventData.ListenFailedCount > 10) {
// 连续同步失败10次后重新登录
weChat.Login()
}
}
}) // 注册联系人修改事件监听器
weChat.SetListener(gochat.CONTACT_MODIFY_EVENT, func(event gochat.Event){
eventData, ok := event.Data.(gochat.ContactModifyEventData)
if ok {
sendEmail("UserNames=" + eventData.UserNames)
}
}) // 注册联系人删除事件监听器
weChat.SetListener(gochat.CONTACT_DELETE_EVENT, func(event gochat.Event){
eventData, ok := event.Data.(gochat.ContactDeleteEventData)
if ok {
sendEmail("UserNames=" + eventData.UserNames)
}
}) // 注册消息事件监听器
weChat.SetListener(gochat.MESSAGE_EVENT, func(event gochat.Event){
eventData, ok := event.Data.(gochat.MessageEventData)
if ok {
if eventData.IsGroupMessage {
if eventData.IsAtMe {
weChat.SendTextMsg(tuling(eventData.Content, eventData.SenderUserId), eventData.SenderUserInfo.UserName)
}
} else {
weChat.SendTextMsg(tuling(eventData.Content, eventData.SenderUserId), eventData.SenderUserInfo.UserName)
}
}
})
}

Something

写完之后就没什么兴趣用这个库做东西了,主要是用的openshift太慢,而且微信很不稳定经常变更规则。

不过用微信机器人还是可以做很多有趣的事情的,有不少同学在玩微信机器人。可以用java写个Android的App。

类似项目有:

Golang 微信机器人包的更多相关文章

  1. 树莓派实战:微信机器人(itchat实现)

    背景 楼主有一台树莓派4B开发板(8G内存版),是目前的顶配机型.这一年来的业余时间,除了写Java.架构方面的文章,也陆续折腾了不少树莓派上的好玩小项目,在此新开一个树莓派实战的文章系列,分享给粉丝 ...

  2. Golang爬虫示例包系列教程(一):pedaily.com投资界爬虫

    Golang爬虫示例包 文件结构 自己用Golang原生包封装了一个爬虫库,源码见go get -u -v github.com/hunterhug/go_tool/spider ---- data ...

  3. 这是一款借助chrome 插件的微信机器人

    1.chrome kit微信机器人简介 借助chrome 插件 js注入来实现消息的发送 chrome devtool api的调用来监听https请求 打开微信登录界面,在扫码登录前必须先打开too ...

  4. python使用itchat库实现微信机器人

    itchat是一个开源的微信个人号接口,可以使用该库进行微信网页版中的所有操作,比如:所有好友.添加好友.拉好友群聊.微信机器人等等.详细用户请看文档介绍,在这里. 本文主要使用该库完成一个能够处理微 ...

  5. Python创建微信机器人

    微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地,今天我们要将便是如何用Python来生成一个微信机器人,突然想起鲁迅先生曾经说过的一句话:因为是微信机器人系列的 ...

  6. 一键解决 go get golang.org/x 包失败

    问题描述 当我们使用 go get.go install.go mod 等命令时,会自动下载相应的包或依赖包.但由于众所周知的原因,类似于 golang.org/x/... 的包会出现下载失败的情况. ...

  7. 第一讲 新手如何学习HTTP协议之实践项目多开微信机器人

    上一篇做了一个smart qq机器人. 前几天,因为突然上不了  smart qq,以为TX 要抛弃了..所以就没有接着完善smart 机器人.应朋友要求,做一个多开微信. 做了几天已经做好了,理论上 ...

  8. 微信机器人 返现机器人 pc版本 移动版本 java开发 小范省钱

    微信机器人 返现机器人 pc版本 移动版本 java开发 小范省钱 微信搜索微信号 fanli-x 或 扫描下方二维码,可查看效果. 非web版微信,pc/移动版微信 支持新号24小时 不封号! 有任 ...

  9. 19-03【golang】strings包

    golang的strings包提供了字符串操作的一系列函数.下面做个简单介绍 函数 用法 备注 Compare(a,b sring) 比较两个字符串   Contains(s, substr stri ...

随机推荐

  1. subline text3常用插件介绍

    常用插件介绍:  html beautify(ctrl+shift+alt+f) 自动排版代码 Emmet 输入少量代码后摁Tab键,系统自动补全代码. AutoFileName 快速列出你想引用的文 ...

  2. Java Stream API进阶篇

    本文github地址 上一节介绍了部分Stream常见接口方法,理解起来并不困难,但Stream的用法不止于此,本节我们将仍然以Stream为例,介绍流的规约操作. 规约操作(reduction op ...

  3. BeagleBone Black安装小米随身WiFi驱动方法

    以下操作直接在beaglebone black上执行 下载驱动源码 git clone https://github.com/rcn-ee/mt7601u.git 下载linux-headers,这是 ...

  4. 关于php的flush在本机正常在服务器不灵的问题

    这个问题网上很多,我就不重复那些了. 我的是关于进度条的应用.我最后遇到的问题是,在本机swampserver环境下的输出缓存很快,但是到了服务器上就是一段一段的了.我的服务器是Web服务器是IIS. ...

  5. 使用javascript解一道关于会议日程安排的面试题

    这道面试题是从 HarrisonHao 的一篇博文中看到的:原文链接 我看到之后,感觉此题十分有趣,遂自己用 node.js 以不同的思路实现了一遍,实现中使用了 lodash 原题比较长,而且是英文 ...

  6. Sublime 常用快捷键

    Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...

  7. java学习笔记 --- 方法

    一.方法  (1)方法:就是完成特定功能的代码块.   注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法.  (2)格式:   修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 ...

  8. iOS开发之Block

    1.定义 (1) Block是OC中的一种数据类型,在iOS开发中被广泛使用 (2) ^是Block的特有标记 (3) Block的实现代码包含在{}之间 (4) 大多情况下,以内联inline函数的 ...

  9. vue简易轮播图

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Redis数据迁移方案

    场景 Redis实例A ---> Redis实例B,整库全量迁移 方案一: mac环境 brew install npm npm install redis-dump -g 针对RedisA: ...