V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
spice630
V2EX  ›  分享创造

#开源项目#wechat-go 微信机器人/web 协议

  •  
  •   spice630 · 2017-04-21 13:34:41 +08:00 · 13385 次点击
    这是一个创建于 2772 天前的主题,其中的信息可能已经有所发展或是发生改变。

    wechat-go

    https://github.com/songtianyi/wechat-go

    go 版本 wechat web api , 十分欢迎 gopher 参与开发更多有趣实用的插件。同时求一个前端,写两个页面给普通用户使用。

    • 支持多用户(多开)
    • 防掉线
    • 功能以插件的形式提供,可以根据用户(比如付费情况)选择加载或者不加载某插件
    • 对于加载的插件, 用户可以通过微信动态开启 /关闭.
    • 目前已提供头像识别, gif 搜索, 笑话大全, 阅后即焚等多个有趣插件
    • 插件编写简单
    • 可以发送图片 /文字 /gif 等多种消息

    Install

    go get -u -v github.com/songtianyi/wechat-go
    

    golang.org/x dep install

    mkdir $GOPATH/src/golang.org/x
    cd $GOPATH/src/golang.org/x
    git clone https://github.com/golang/net.git
    git clone https://github.com/golang/text.git
    

    Demo project

    go-aida

    Example code

    Create your own chatbot
    package main
    
    import (
    	"github.com/songtianyi/rrframework/logs"
    	"github.com/songtianyi/wechat-go/plugins/faceplusplus"
    	"github.com/songtianyi/wechat-go/wxweb"
    	"github.com/songtianyi/wechat-go/plugins/wxweb/gifer"
    	"github.com/songtianyi/wechat-go/plugins/wxweb/replier"
    	"github.com/songtianyi/wechat-go/plugins/wxweb/switcher"
    )
    
    func main() {
    	// create session
    	session, err := wxweb.CreateSession(nil, nil, wxweb.TERMINAL_MODE)
    	if err != nil {
    		logs.Error(err)
    		return
    	}
    
    	// add plugins for this session, they are disabled by default
    	faceplusplus.Register(session)
    	replier.Register(session)
    	switcher.Register(session)
    	gifer.Register(session)
    
    	// enable plugin
    	session.HandlerRegister.EnableByName("switcher")
    	session.HandlerRegister.EnableByName("faceplusplus")
    
    	if err := session.LoginAndServe(); err != nil {
    		logs.Error("session exit, %s", err)
    	}
    }
    

    Plugins

    switcher

    一个管理插件的插件

    #关闭某个插件, 在微信聊天窗口输入
    disable faceplusplus
    #开启某个插件, 在微信聊天窗口输入
    enable faceplusplus
    #查看所有插件信息, 在微信聊天窗口输入
    dump
    
    faceplusplus

    对收到的图片做面部识别,返回性别和年龄

    gifer

    以收到的文字消息为关键字做 gif 搜索,返回 gif 图, 注意返回的 gif 可能尺度较大,比如文字消息中包含“污”等关键词。

    replier

    对收到的文字 /图片消息,做自动应答,回复固定文字消息

    laosj

    随机获取一张美女图片, 在聊天窗口输入

    美女
    
    joker

    获取一则笑话, 在聊天窗口输入

    笑话
    
    revoker

    消息撤回插件, 3s 后自动撤回手机端所发的文本消息. 机器人发出的消息需要自己在插件里写撤回逻辑.

    制作自己插件

    package demo // 以插件名命令包名
    
    import (
    	"github.com/songtianyi/rrframework/logs" // 导入日志包
    	"github.com/songtianyi/wechat-go/wxweb"  // 导入协议包
    )
    
    // 必须有的插件注册函数
    // 指定 session, 可以对不同用户注册不同插件
    func Register(session *wxweb.Session) {
    	// 将插件注册到 session
    	// 第一个参数: 指定消息类型, 所有该类型的消息都会被转发到此插件
    	// 第二个参数: 指定消息处理函数, 消息会进入此函数
    	// 第三个参数: 自定义插件名,不能重名, switcher 插件会用到此名称
    	session.HandlerRegister.Add(wxweb.MSG_TEXT, wxweb.Handler(demo), "textdemo")
    
    	// 可以多个个消息类型使用同一个处理函数,也可以分开
    	session.HandlerRegister.Add(wxweb.MSG_IMG, wxweb.Handler(demo), "imgdemo")
    }
    
    // 消息处理函数
    func demo(session *wxweb.Session, msg *wxweb.ReceivedMessage) {
    
    	// 可选:避免此插件对所有群 /联系人生效 可以用 contact manager 来过滤
    	contact := session.Cm.GetContactByUserName(msg.FromUserName)
    	if contact == nil {
    		logs.Error("ignore the messages from", msg.FromUserName)
    		return
    	}
    
    	// 可选: 过滤消息类型
    	if msg.MsgType == wxweb.MSG_IMG {
    		return
    	}
    
    	// 可选: 根据 wxweb.User 数据结构中的数据来过滤
    	if contact.PYQuanPin != "songtianyi" {
    		// 根据用户昵称的拼音全拼来过滤
    		return
    	}
    
    	// 可选:过滤和自己无关的群组消息
    	if msg.IsGroup && msg.Who != session.Bot.UserName {
    		return
    	}
    
    	// 取出收到的内容
    	// 取 text
    	logs.Info(msg.Content)
    	//// 取 img
    	//if b, err := session.GetImg(msg.MsgId); err == nil {
    	//	logs.Debug(string(b))
    	//}
    
    	// anything
    
    	// 回复消息
    	// 第一个参数: 回复的内容
    	// 第二个参数: 机器人 ID
    	// 第三个参数: 联系人 /群组 /特殊账号 ID
    	session.SendText("plugin demo", session.Bot.UserName, wxweb.RealTargetUserName(session, msg))
    	// 回复图片和 gif 参见 wxweb/session.go
    
    }
    

    Show

    example

    第 1 条附言  ·  2017-04-21 21:32:08 +08:00

    抱歉,上面的example code 没及时更新,有编译错误,更正为:

    package main
    
    import (
    	"github.com/songtianyi/rrframework/logs"
    	"github.com/songtianyi/wechat-go/plugins/wxweb/faceplusplus"
    	"github.com/songtianyi/wechat-go/plugins/wxweb/gifer"
    	"github.com/songtianyi/wechat-go/plugins/wxweb/replier"
    	"github.com/songtianyi/wechat-go/plugins/wxweb/switcher"
    	"github.com/songtianyi/wechat-go/wxweb"
    )
    
    func main() {
    	// create session
    	session, err := wxweb.CreateSession(nil, nil, wxweb.TERMINAL_MODE)
    	if err != nil {
    		logs.Error(err)
    		return
    	}
    
    	// add plugins for this session, they are disabled by default
    	faceplusplus.Register(session)
    	replier.Register(session)
    	switcher.Register(session)
    	gifer.Register(session)
    
    	// enable plugin
    	session.HandlerRegister.EnableByName("switcher")
    	session.HandlerRegister.EnableByName("faceplusplus")
    
    	if err := session.LoginAndServe(false); err != nil {
    		logs.Error("session exit, %s", err)
    	}
    }
    

    更多代码参见 demo project:https://github.com/songtianyi/go-aida/tree/master/demo

    第 2 条附言  ·  2017-04-21 22:29:54 +08:00
    已加入 travis 持续集成工具,不会再出现编译问题了,不过依赖包确实有点多,网络不通畅可能会比较烦。。
    第 3 条附言  ·  2017-04-22 00:08:20 +08:00
    欢迎提 issue 和 pr 。
    目前只有我一个 commiter ,会优先考虑广泛的需求。
    第 4 条附言  ·  2017-05-08 12:25:40 +08:00
    update 2017-05-08
    改用 vendor 管理依赖
    第 5 条附言  ·  2017-05-10 22:45:05 +08:00
    update 2017-05-08
    1. fix issue #4
    2. 移除 vendor,issue 都解决之后发第一个版本 release
    第 6 条附言  ·  2017-05-11 22:21:40 +08:00
    update 20-17-05-11
    fix issue #3 修复了一个在树莓派上运行出错的 bug
    第 7 条附言  ·  2017-05-12 18:05:21 +08:00
    update 2017-05-12
    第一个 release ~~
    https://github.com/songtianyi/wechat-go/releases
    第 8 条附言  ·  2017-05-12 21:33:53 +08:00
    update 2017-05-12
    添加 消息跨群转发 插件 forwarder
    第 9 条附言  ·  2017-05-17 17:56:26 +08:00
    第 10 条附言  ·  2017-05-18 20:49:06 +08:00
    update 2017-05-18
    新增中英互译插件,基于有道翻译 API:)可以撩外国妹纸撩撩撩。。
    94 条回复    2019-06-19 17:32:07 +08:00
    missdeer
        1
    missdeer  
       2017-04-21 13:56:56 +08:00
    终于有 go 版本的来了
    spice630
        2
    spice630  
    OP
       2017-04-21 14:00:40 +08:00   ❤️ 1
    @missdeer 好久了,但是一直不完善,最近几天完善了很多,主要是支持多开,然后插件化管理了,方便二次开发。
    cccssss
        3
    cccssss  
       2017-04-21 14:35:35 +08:00
    恕我愚钝, go get 一溜遍,然后复制粘贴 demo 到 main.go

    然后 go run ,出来一个
    "github.com/songtianyi/wechat-go/plugins/faceplusplus" 找不到

    好先屏蔽,然后再运行
    .\main.go:31: not enough arguments in call to session.LoginAndServe
    have ()
    want (bool)

    好吧,加个 false
    出来一堆不知道什么东西

    然后就没有然后了,楼主你确定没闹?
    ob
        4
    ob  
       2017-04-21 19:09:29 +08:00 via Android
    想知道防掉线是怎么实现的?
    心跳包检测地址那么多个,发现一直只有一个能用,如何第一个检测失败,后面的也一定失败。
    然后只能重新登录。
    spice630
        5
    spice630  
    OP
       2017-04-21 21:22:49 +08:00
    @ob
    你说的是 synccheck 地址?每次会遍历所有(任何一个能用就 ok )。
    防掉线其实就是有异常 用历史 cookie 等信息重新登录。
    spice630
        6
    spice630  
    OP
       2017-04-21 21:23:55 +08:00
    @cccssss
    很抱歉, example code 没及时更新,以后我会注意。
    demo project 可以直接编译运行,因为每次更新我都会重编它,有时候会忘记更新 README
    spice630
        7
    spice630  
    OP
       2017-04-21 21:32:45 +08:00
    @cccssss
    已 APPEND 正确代码, github 已同步更新。
    spice630
        8
    spice630  
    OP
       2017-04-21 22:30:10 +08:00
    已加入 travis 持续集成工具,不会再出现编译问题了,不过依赖包确实有点多,网络不通畅可能会比较烦。。
    buf1024
        9
    buf1024  
       2017-04-21 22:56:59 +08:00
    微信的通讯协议自己破解的?
    spice630
        10
    spice630  
    OP
       2017-04-21 23:46:43 +08:00
    @buf1024
    web 协议,人人都能看到的,模拟网页版。
    zhaolion
        11
    zhaolion  
       2017-04-21 23:53:05 +08:00
    使用一点基本的依赖管理吧, go vendor 已经有一些能用的了,至少不会让开发一开始就一脸蒙蔽的去 go get
    blackFool
        12
    blackFool  
       2017-04-21 23:55:13 +08:00
    最多多少钱不掉线,是可以一直不掉线吗?
    yangxuan8282
        13
    yangxuan8282  
       2017-04-22 00:00:04 +08:00
    好像类似 itchat? 能不能把二维码发送到邮箱,然后在邮箱那边扫码登录
    spice630
        14
    spice630  
    OP
       2017-04-22 00:01:08 +08:00
    @zhaolion
    嗯,有时间加上。我个人一直不喜欢加这些东西,强迫自己保证所有软件兼容,哈哈。
    spice630
        15
    spice630  
    OP
       2017-04-22 00:02:38 +08:00
    @yangxuan8282
    嗯,是 go 版本的 itchat 。可以做到,在什么情况下需要这样?目前想做个网页版扫码。
    spice630
        16
    spice630  
    OP
       2017-04-22 00:04:23 +08:00
    @blackFool
    我自己运行过几个小时吧,具体的没测试过,手机版网络掉线会影响到 bot 。而且腾讯的反 robot 机制也很厉害,可能会强制重登。
    spice630
        17
    spice630  
    OP
       2017-04-22 00:07:11 +08:00
    @yangxuan8282
    目前只有我一个 commiter 所以会优先考虑必要的功能,有需求可以提 issue/pr 。
    ob
        18
    ob  
       2017-04-22 00:14:01 +08:00 via Android
    @spice630 对, synccheck 。
    我知道有好多地址可以遍历,但是我发现如果第一个失败,你接下来遍历的结果都是失败(遍历的地址我也是抓最新的那几个)
    所以感觉地址加那么多个没啥用,就
    wx2.push.qq.com 一个就够了。
    不知道地址有没有记对。
    ob
        19
    ob  
       2017-04-22 00:14:19 +08:00 via Android
    @blackFool 试过几天没掉。
    junred
        20
    junred  
       2017-04-22 00:17:54 +08:00
    👍 我现在一直在琢磨着 py 版本的~

    网页版接口限制比较多,掉线比较正常~
    yangxuan8282
        21
    yangxuan8282  
       2017-04-22 00:23:47 +08:00
    @spice630 用途类似这个 drone ci 的插件: https://github.com/appleboy/drone-line ,.drone.yml 里填写邮箱,然后发二维码到邮箱扫码登录,等 build 完 docker 镜像给微信号发个通知,不过这样可能每次都要扫码,如果能扫一次然后就保存登录状态就好了
    spice630
        22
    spice630  
    OP
       2017-04-22 00:24:13 +08:00
    @ob
    怎么会?
    我印象中是 wx.push.qq.com
    今天不掉应该算是不错的了
    spice630
        23
    spice630  
    OP
       2017-04-22 00:25:08 +08:00
    @junred
    py 版本比我这个成熟,起码稳定性要高,我现在还没到追求稳定性那个 阶段。
    spice630
        24
    spice630  
    OP
       2017-04-22 00:26:24 +08:00
    @yangxuan8282
    只用扫一次,至于掉不掉要看代码是否有问题和腾讯的反 robot 机制了。
    spice630
        25
    spice630  
    OP
       2017-04-22 00:28:50 +08:00
    @yangxuan8282
    line 不错 啊,还专门把 api 开放了。
    yangxuan8282
        26
    yangxuan8282  
       2017-04-22 00:47:27 +08:00
    @spice630 嗯, telegram 好像也有官方的 api ,微信比较封闭
    HanSonJ
        27
    HanSonJ  
       2017-04-22 01:11:26 +08:00
    搭车推广 https://github.com/hanson/vbot

    想问问楼主所说的防掉线是怎样的一个思路?
    spice630
        28
    spice630  
    OP
       2017-04-22 10:58:56 +08:00
    @HanSonJ
    防掉线就是利用历史信息,省掉扫码的步骤,重新登录。
    buf1024
        29
    buf1024  
       2017-04-22 11:45:29 +08:00
    @spice630 web 协议的相关代码可能需要更新一下哦,我测试一下,在 WebNewLoginPage 的请求中,应答报文,并非是易<error>为根节点的 xml 数据,而是“<script>window.location.href="https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?fun=old&lang=zh_CN&scan=1492832403&ticket=A8tgH5hhPC2NuYYHLo8AapBB%40qrticket_0&uuid=wZKWg0iSWg%3D%3D"</script>”类似这样的页面刷新哦。
    welsmann
        30
    welsmann  
       2017-04-22 13:33:29 +08:00
    aida....
    HanSonJ
        31
    HanSonJ  
       2017-04-22 16:01:54 +08:00
    @spice630 #28 那只是通过 cookie 免扫码登录,不算防掉线
    Orlion
        32
    Orlion  
       2017-04-22 19:38:02 +08:00 via Android
    用 golang 快写完了突然发现还不如用 java 写,方便在安卓上跑😏。
    ob
        33
    ob  
       2017-04-23 21:23:51 +08:00
    @spice630
    @Orlion
    想起一个问题请教下,你们微信登录的时候,每次获取到的同一个用户 id 值那一串是固定的,还是登录一次换一次?
    类似 @fdsafdsafsdafsafds 这样。
    Orlion
        34
    Orlion  
       2017-04-23 23:04:02 +08:00 via Android
    @ob 好像是会换了,忘记了😄
    spice630
        35
    spice630  
    OP
       2017-04-24 09:14:50 +08:00 via iPhone
    @ob
    协议会换的 UserName 每次不一样
    spice630
        36
    spice630  
    OP
       2017-04-24 09:16:44 +08:00 via iPhone
    @Orlion
    有道理。
    不过机器人作为后端 跟前端用什么关系不大
    spice630
        37
    spice630  
    OP
       2017-04-24 09:17:22 +08:00 via iPhone
    @HanSonJ
    换个什么说法比较好
    HanSonJ
        38
    HanSonJ  
       2017-04-24 09:24:23 +08:00
    @spice630 #37 只是免扫码登录
    spice630
        39
    spice630  
    OP
       2017-04-24 09:29:32 +08:00 via iPhone
    @buf1024
    并非如此。您的请求参数是什么?这个问题我一开始也遇到过 忘记是什么原因了,目前的代码是没有这个问题的。
    spice630
        40
    spice630  
    OP
       2017-04-24 09:31:18 +08:00 via iPhone
    @junred
    感觉网页版只能算个玩具 手机版的协议也有人做 不过没有公开的
    spice630
        41
    spice630  
    OP
       2017-04-24 09:32:46 +08:00 via iPhone
    @HanSonJ
    嗯 我换个说法 免得误导别人,出门没带 电源 脑壳疼 23333
    ob
        42
    ob  
       2017-04-24 09:43:35 +08:00 via Android
    @spice630 那每次根据什么确定同一个用户?有些用户没有微信号,昵称又可以改,用什么办法唯一确定?
    jiumingmao
        43
    jiumingmao  
       2017-04-24 13:29:44 +08:00
    @ob 设置备注
    ob
        44
    ob  
       2017-04-24 13:37:54 +08:00 via Android
    @jiumingmao 非好友,微信群,全部一个一个备注就太麻烦了。
    buf1024
        45
    buf1024  
       2017-04-24 17:51:50 +08:00
    @spice630 这是跑你的 demo 的结果……
    a308057848
        46
    a308057848  
       2017-04-25 16:32:20 +08:00
    本地已跑通 log 模块死活加载不上,后面看代码用了:github.com/astaxie/beego/logs
    trys1
        47
    trys1  
       2017-04-26 09:42:35 +08:00 via Android
    已星
    spice630
        48
    spice630  
    OP
       2017-04-26 17:51:26 +08:00 via Android
    @buf1024
    那只能麻烦你提供复现代码了 囧 可以提到 github 上
    @a308057848
    恩 logs 模块直接用的 beego 的
    @trys1 感谢
    spice630
        49
    spice630  
    OP
       2017-04-26 18:17:06 +08:00 via Android
    @a308057848
    具体是什么错误呢
    spice630
        50
    spice630  
    OP
       2017-05-08 12:25:09 +08:00
    已改用 vendor 来管理依赖
    spice630
        51
    spice630  
    OP
       2017-05-09 19:46:37 +08:00
    移除了 vendor,真心不喜欢这种依赖管理方式,代码后续会提供 release。
    spice630
        52
    spice630  
    OP
       2017-05-09 23:28:01 +08:00
    @buf1024
    关于这个问题,基本能确定和帐号有关,被腾讯认定为机器人,见 issue
    https://github.com/songtianyi/wechat-go/issues/4
    buf1024
        53
    buf1024  
       2017-05-10 09:20:18 +08:00
    @spice630 这个回答不成立。原因如下:
    1. 用 web 浏览器可以登录 -- 这个没有完全模拟浏览器行为?
    2. 用这个可以登录使用 https://github.com/Urinx/WeixinBot
    3. 自己用浏览器开发者工具查看微信交互过程,设置好 user-agent,refer,cookie 等信息,可能登录。
    spice630
        54
    spice630  
    OP
       2017-05-10 22:38:59 +08:00
    @buf1024
    fixed
    spice630
        55
    spice630  
    OP
       2017-05-11 22:21:59 +08:00
    update 20-17-05-11
    fix issue #3 修复了一个在树莓派上运行出错的 bug
    spice630
        56
    spice630  
    OP
       2017-05-12 18:05:42 +08:00
    update 2017-05-12
    第一个 release ~~
    https://github.com/songtianyi/wechat-go/releases
    spice630
        57
    spice630  
    OP
       2017-05-12 21:34:00 +08:00
    update 2017-05-12
    添加 消息跨群转发 插件 forwarder
    guotie
        58
    guotie  
       2017-05-13 13:49:41 +08:00
    怒赞!
    spice630
        59
    spice630  
    OP
       2017-05-17 17:56:38 +08:00
    spice630
        60
    spice630  
    OP
       2017-05-18 20:49:14 +08:00
    update 2017-05-18
    新增中英互译插件,基于有道翻译 API:)可以撩外国妹纸撩撩撩。。
    only0jac
        61
    only0jac  
       2017-05-22 10:48:28 +08:00 via Android
    试了一下,一小时内必掉线,且无法自动登录,楼主有这种情况吗?
    spice630
        62
    spice630  
    OP
       2017-05-22 19:31:02 +08:00
    @only0jac
    贴下错误信息看下呢?
    only0jac
        63
    only0jac  
       2017-05-22 21:56:34 +08:00
    only0jac
        64
    only0jac  
       2017-05-22 22:33:24 +08:00
    @spice630 还有,不是说可以自动登陆么?
    spice630
        65
    spice630  
    OP
       2017-05-23 09:52:09 +08:00
    @only0jac
    需要自己加这个逻辑
    ```
    for {
    if err := session.LoginAndServe(false); err != nil {
    logs.Error("session exit, %s", err)
    for i := 0; i < 3; i++ {
    logs.Info("trying re-login with cache")
    if err := session.LoginAndServe(true); err != nil {
    logs.Error("re-login error, %s", err)
    }
    time.Sleep(3 * time.Second)
    }
    if session, err = wxweb.CreateSession(nil, session.HandlerRegister, wxweb.TERMINAL_MODE); err != nil {
    logs.Error("create new sesion failed, %s", err)
    break
    }
    } else {
    logs.Info("closed by user")
    break
    }
    }
    ```

    我抽空在 windows 测试下
    spice630
        66
    spice630  
    OP
       2017-05-23 09:55:50 +08:00
    @only0jac
    代码有点乱,参考 travis/bot.go
    only0jac
        67
    only0jac  
       2017-05-23 13:30:23 +08:00
    @spice630 谢谢,刚发现一个 bug,挂了有五六个小时,前一段时间正常,最后虽然后台显示没掉线,但已经收不到消息了,并且登陆手机微信也没显示网页在线
    only0jac
        68
    only0jac  
       2017-05-23 13:33:03 +08:00
    @spice630 最后状态是 1102
    spice630
        69
    spice630  
    OP
       2017-05-23 15:03:12 +08:00
    @only0jac
    1102 没有做处理, 之前并没有遇到过这个值。拉下最新的代码,已经把所有的异常 ret 都当错误抛出去了,这样会进入重登逻辑。
    目前还不清楚 1102 的意思。
    挂机期间 网络有波动不?
    spice630
        70
    spice630  
    OP
       2017-05-23 15:06:01 +08:00
    @only0jac
    另外,你的截图里 有个%s,能贴下代码不,应该不是示例代码吧。
    only0jac
        71
    only0jac  
       2017-05-23 18:21:36 +08:00
    @spice630 vps 挂机,国内 Windows 阿里云和国外 centos 都试过,无网络波动,在线不会超过半天,必掉线,截图的%s,是我把你的 logs 替换成了 fmt.println,不过我又换回来了,用的你原先的代码,然后错误却不输出了
    only0jac
        72
    only0jac  
       2017-05-23 19:10:38 +08:00
    @spice630

    这个是编译最新的 bot.go,一发消息就挂

    spice630
        73
    spice630  
    OP
       2017-05-23 21:03:10 +08:00
    @only0jac
    go 版本
    spice630
        74
    spice630  
    OP
       2017-05-23 21:03:55 +08:00
    @only0jac
    方便的话提个 issue,便于跟踪问题,也有利于其他遇到相同问题的人:)
    spice630
        75
    spice630  
    OP
       2017-05-23 21:41:29 +08:00
    @only0jac
    刚在 windows 下跑了下,问题确实多,尽快解决。
    only0jac
        76
    only0jac  
       2017-05-23 23:02:10 +08:00 via Android
    @spice630 go 是最新版本,linux 下也没法用,老掉线
    spice630
        77
    spice630  
    OP
       2017-05-23 23:40:28 +08:00
    @only0jac
    目前还没 时间做 稳定性方面的优化 :( , 你可以用 web 版挂机试下 可以挂多久。
    leopku
        78
    leopku  
       2017-05-24 01:58:17 +08:00 via Android
    之前星了,支持一下
    spice630
        79
    spice630  
    OP
       2017-05-24 09:33:14 +08:00
    @leopku
    感谢🙏,
    spice630
        80
    spice630  
    OP
       2017-05-24 22:44:02 +08:00
    @only0jac
    windows 端的,请在 mac 或者 linux 下使用交叉编译。
    GOOS=windows GOARCH=amd64 go build travis/windows/windows_bot.go
    二维码在 ../public/qrcode 下
    only0jac
        81
    only0jac  
       2017-05-24 22:50:34 +08:00
    @spice630 我在 Windows 下交叉编译 Linux 的,Windows 直接生成 exe 不行?
    spice630
        82
    spice630  
    OP
       2017-05-24 23:18:23 +08:00
    @only0jac
    嗯,原因还不明确。
    spice630
        83
    spice630  
    OP
       2017-05-24 23:28:15 +08:00
    @only0jac
    等我搞一套好用的开发环境再去 debug
    spice630
        84
    spice630  
    OP
       2017-05-27 13:55:14 +08:00
    @only0jac
    windows 下推荐使用 cmder,可以用 TERMINAL_MODE
    spice630
        85
    spice630  
    OP
       2017-05-27 18:24:45 +08:00
    https://www.zhihu.com/lives/846360223609413632
    https://github.com/rixingyike/goeve-wechat-robot
    都有人拿我的项目去变现了,感谢认可,也很鼓励大家这么做,这样这个项目也更有意义。但是源码中的 license 请保留,不单单是为了我自己,也为后续的贡献者。
    spice630
        86
    spice630  
    OP
       2017-06-06 22:15:39 +08:00
    wechat-go 的示例项目,目标是可以方便用户在页面上扫码登录并管理插件
    https://github.com/songtianyi/go-aida
    myself659
        87
    myself659  
       2017-06-09 13:13:19 +08:00
    大赞
    spice630
        88
    spice630  
    OP
       2017-06-12 20:37:32 +08:00
    go-aida restful api 开发完成,这周页面应该可以好。
    spice630
        89
    spice630  
    OP
       2017-06-16 13:53:21 +08:00
    [email protected]
    新增插件 verify
    自动接受好友请求
    spice630
        90
    spice630  
    OP
       2017-06-16 18:30:42 +08:00
    新增插件 share
    资源自动分发示例,纸牌屋第五季!
    spice630
        91
    spice630  
    OP
       2017-07-29 00:08:04 +08:00
    go-aida 的坑埋了
    https://github.com/songtianyi/go-aida
    界面很简陋,很丑,先将就用。
    spice630
        92
    spice630  
    OP
       2017-09-21 13:42:32 +08:00
    ibreaker
        93
    ibreaker  
       2019-01-19 18:56:53 +08:00
    @spice630 交流群打不开了
    useben
        94
    useben  
       2019-06-19 17:32:07 +08:00
    之前用给一个 py 的做过,重构到 go 也不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2640 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 15:12 · PVG 23:12 · LAX 07:12 · JFK 10:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.