一、

最近用在学习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. python3.4 安装 scrapy 报错 VS2010

    安装scrapy框架报错是常见问题 还好,本人只碰到其中一个bug,以下是此次安装经验 环境 py3.4 windows7 64位 安装有VS2010 pip包管理(pycharm) 报错信息 安装l ...

  2. 服务器 ADO 错误:0x80004005,[DBNETLIB]

    2012-12-0310:44:06 ]ADO 错误:0x80004005,[DBNETLIB][ConnectionOpen(Connect()).]SQL Server 不存在或拒绝访问.[ 20 ...

  3. 1113: [Poi2008]海报PLA

    1113: [Poi2008]海报PLA Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 765  Solved: 466[Submit][Status ...

  4. 3399: [Usaco2009 Mar]Sand Castle城堡

    3399: [Usaco2009 Mar]Sand Castle城堡 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 37  Solved: 32[Sub ...

  5. Android全局异常捕捉

    // 定义自定义捕捉 package com.xiaosw.test; import java.io.File; import java.io.FileOutputStream; import jav ...

  6. 百度api的使用

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. ASP.NET Core MVC 源码学习:MVC 启动流程详解

    前言 在 上一篇 文章中,我们学习了 ASP.NET Core MVC 的路由模块,那么在本篇文章中,主要是对 ASP.NET Core MVC 启动流程的一个学习. ASP.NET Core 是新一 ...

  8. 老李推荐: 第14章2节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer架构概述

    老李推荐: 第14章2节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer架构概述   HierarchyViewer库的引入让M ...

  9. 老李分享:《Linux Shell脚本攻略》 要点(一)

    老李分享:<Linux Shell脚本攻略> 要点(一)   第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符 ...

  10. 一个GOOD的Idea需要伯乐发觉-致敬错过的IDEA

    类似一个微信电话本