爱意满满的作品展示区。
spice630

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

  •  
  •   spice630 · Apr 21, 2017 · 14774 views
    This topic created in 3483 days ago, the information mentioned may be changed or developed.

    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

    Supplement 1  ·  Apr 21, 2017

    抱歉,上面的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

    Supplement 2  ·  Apr 21, 2017
    已加入 travis 持续集成工具,不会再出现编译问题了,不过依赖包确实有点多,网络不通畅可能会比较烦。。
    Supplement 3  ·  Apr 22, 2017
    欢迎提 issue 和 pr 。
    目前只有我一个 commiter ,会优先考虑广泛的需求。
    Supplement 4  ·  May 8, 2017
    update 2017-05-08
    改用 vendor 管理依赖
    Supplement 5  ·  May 10, 2017
    update 2017-05-08
    1. fix issue #4
    2. 移除 vendor,issue 都解决之后发第一个版本 release
    Supplement 6  ·  May 11, 2017
    update 20-17-05-11
    fix issue #3 修复了一个在树莓派上运行出错的 bug
    Supplement 7  ·  May 12, 2017
    update 2017-05-12
    第一个 release ~~
    https://github.com/songtianyi/wechat-go/releases
    Supplement 8  ·  May 12, 2017
    update 2017-05-12
    添加 消息跨群转发 插件 forwarder
    Supplement 9  ·  May 17, 2017
    Supplement 10  ·  May 18, 2017
    update 2017-05-18
    新增中英互译插件,基于有道翻译 API:)可以撩外国妹纸撩撩撩。。
    94 replies  •  2019-06-19 17:32:07 +08:00
    missdeer
    missdeer
    Apr 21, 2017
    1
    终于有 go 版本的来了
    spice630
    spice630
    OP
    Apr 21, 2017❤️1
    2
    @missdeer 好久了,但是一直不完善,最近几天完善了很多,主要是支持多开,然后插件化管理了,方便二次开发。
    cccssss
    cccssss
    Apr 21, 2017
    3
    恕我愚钝, 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
    ob
    Apr 21, 2017 via Android
    4
    想知道防掉线是怎么实现的?
    心跳包检测地址那么多个,发现一直只有一个能用,如何第一个检测失败,后面的也一定失败。
    然后只能重新登录。
    spice630
    spice630
    OP
    Apr 21, 2017
    5
    @ob
    你说的是 synccheck 地址?每次会遍历所有(任何一个能用就 ok )。
    防掉线其实就是有异常 用历史 cookie 等信息重新登录。
    spice630
    spice630
    OP
    Apr 21, 2017
    6
    @cccssss
    很抱歉, example code 没及时更新,以后我会注意。
    demo project 可以直接编译运行,因为每次更新我都会重编它,有时候会忘记更新 README
    spice630
    spice630
    OP
    Apr 21, 2017
    7
    @cccssss
    已 APPEND 正确代码, github 已同步更新。
    spice630
    spice630
    OP
    Apr 21, 2017
    8
    已加入 travis 持续集成工具,不会再出现编译问题了,不过依赖包确实有点多,网络不通畅可能会比较烦。。
    buf1024
    buf1024
    Apr 21, 2017
    9
    微信的通讯协议自己破解的?
    spice630
    spice630
    OP
    Apr 21, 2017
    10
    @buf1024
    web 协议,人人都能看到的,模拟网页版。
    zhaolion
    zhaolion
    Apr 21, 2017
    11
    使用一点基本的依赖管理吧, go vendor 已经有一些能用的了,至少不会让开发一开始就一脸蒙蔽的去 go get
    blackFool
    blackFool
    Apr 21, 2017
    12
    最多多少钱不掉线,是可以一直不掉线吗?
    yangxuan8282
    yangxuan8282
    Apr 22, 2017
    13
    好像类似 itchat? 能不能把二维码发送到邮箱,然后在邮箱那边扫码登录
    spice630
    spice630
    OP
    Apr 22, 2017
    14
    @zhaolion
    嗯,有时间加上。我个人一直不喜欢加这些东西,强迫自己保证所有软件兼容,哈哈。
    spice630
    spice630
    OP
    Apr 22, 2017
    15
    @yangxuan8282
    嗯,是 go 版本的 itchat 。可以做到,在什么情况下需要这样?目前想做个网页版扫码。
    spice630
    spice630
    OP
    Apr 22, 2017
    16
    @blackFool
    我自己运行过几个小时吧,具体的没测试过,手机版网络掉线会影响到 bot 。而且腾讯的反 robot 机制也很厉害,可能会强制重登。
    spice630
    spice630
    OP
    Apr 22, 2017
    17
    @yangxuan8282
    目前只有我一个 commiter 所以会优先考虑必要的功能,有需求可以提 issue/pr 。
    ob
    ob
    Apr 22, 2017 via Android
    18
    @spice630 对, synccheck 。
    我知道有好多地址可以遍历,但是我发现如果第一个失败,你接下来遍历的结果都是失败(遍历的地址我也是抓最新的那几个)
    所以感觉地址加那么多个没啥用,就
    wx2.push.qq.com 一个就够了。
    不知道地址有没有记对。
    ob
    ob
    Apr 22, 2017 via Android
    19
    @blackFool 试过几天没掉。
    junred
    junred
    Apr 22, 2017
    20
    👍 我现在一直在琢磨着 py 版本的~

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

    想问问楼主所说的防掉线是怎样的一个思路?
    spice630
    spice630
    OP
    Apr 22, 2017
    28
    @HanSonJ
    防掉线就是利用历史信息,省掉扫码的步骤,重新登录。
    buf1024
    buf1024
    Apr 22, 2017
    29
    @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
    welsmann
    Apr 22, 2017
    30
    aida....
    HanSonJ
    HanSonJ
    Apr 22, 2017
    31
    @spice630 #28 那只是通过 cookie 免扫码登录,不算防掉线
    Orlion
    Orlion
    Apr 22, 2017 via Android
    32
    用 golang 快写完了突然发现还不如用 java 写,方便在安卓上跑😏。
    ob
    ob
    Apr 23, 2017
    33
    @spice630
    @Orlion
    想起一个问题请教下,你们微信登录的时候,每次获取到的同一个用户 id 值那一串是固定的,还是登录一次换一次?
    类似 @fdsafdsafsdafsafds 这样。
    Orlion
    Orlion
    Apr 23, 2017 via Android
    34
    @ob 好像是会换了,忘记了😄
    spice630
    spice630
    OP
    Apr 24, 2017 via iPhone
    35
    @ob
    协议会换的 UserName 每次不一样
    spice630
    spice630
    OP
    Apr 24, 2017 via iPhone
    36
    @Orlion
    有道理。
    不过机器人作为后端 跟前端用什么关系不大
    spice630
    spice630
    OP
    Apr 24, 2017 via iPhone
    37
    @HanSonJ
    换个什么说法比较好
    HanSonJ
    HanSonJ
    Apr 24, 2017
    38
    @spice630 #37 只是免扫码登录
    spice630
    spice630
    OP
    Apr 24, 2017 via iPhone
    39
    @buf1024
    并非如此。您的请求参数是什么?这个问题我一开始也遇到过 忘记是什么原因了,目前的代码是没有这个问题的。
    spice630
    spice630
    OP
    Apr 24, 2017 via iPhone
    40
    @junred
    感觉网页版只能算个玩具 手机版的协议也有人做 不过没有公开的
    spice630
    spice630
    OP
    Apr 24, 2017 via iPhone
    41
    @HanSonJ
    嗯 我换个说法 免得误导别人,出门没带 电源 脑壳疼 23333
    ob
    ob
    Apr 24, 2017 via Android
    42
    @spice630 那每次根据什么确定同一个用户?有些用户没有微信号,昵称又可以改,用什么办法唯一确定?
    jiumingmao
    jiumingmao
    Apr 24, 2017
    43
    @ob 设置备注
    ob
    ob
    Apr 24, 2017 via Android
    44
    @jiumingmao 非好友,微信群,全部一个一个备注就太麻烦了。
    buf1024
    buf1024
    Apr 24, 2017
    45
    @spice630 这是跑你的 demo 的结果……
    a308057848
    a308057848
    Apr 25, 2017
    46
    本地已跑通 log 模块死活加载不上,后面看代码用了:github.com/astaxie/beego/logs
    trys1
    trys1
    Apr 26, 2017 via Android
    47
    已星
    spice630
    spice630
    OP
    Apr 26, 2017 via Android
    48
    @buf1024
    那只能麻烦你提供复现代码了 囧 可以提到 github 上
    @a308057848
    恩 logs 模块直接用的 beego 的
    @trys1 感谢
    spice630
    spice630
    OP
    Apr 26, 2017 via Android
    49
    @a308057848
    具体是什么错误呢
    spice630
    spice630
    OP
    May 8, 2017
    50
    已改用 vendor 来管理依赖
    spice630
    spice630
    OP
    May 9, 2017
    51
    移除了 vendor,真心不喜欢这种依赖管理方式,代码后续会提供 release。
    spice630
    spice630
    OP
    May 9, 2017
    52
    @buf1024
    关于这个问题,基本能确定和帐号有关,被腾讯认定为机器人,见 issue
    https://github.com/songtianyi/wechat-go/issues/4
    buf1024
    buf1024
    May 10, 2017
    53
    @spice630 这个回答不成立。原因如下:
    1. 用 web 浏览器可以登录 -- 这个没有完全模拟浏览器行为?
    2. 用这个可以登录使用 https://github.com/Urinx/WeixinBot
    3. 自己用浏览器开发者工具查看微信交互过程,设置好 user-agent,refer,cookie 等信息,可能登录。
    spice630
    spice630
    OP
    May 10, 2017
    54
    @buf1024
    fixed
    spice630
    spice630
    OP
    May 11, 2017
    55
    update 20-17-05-11
    fix issue #3 修复了一个在树莓派上运行出错的 bug
    spice630
    spice630
    OP
    May 12, 2017
    56
    update 2017-05-12
    第一个 release ~~
    https://github.com/songtianyi/wechat-go/releases
    spice630
    spice630
    OP
    May 12, 2017
    57
    update 2017-05-12
    添加 消息跨群转发 插件 forwarder
    guotie
    guotie
    May 13, 2017
    58
    怒赞!
    spice630
    spice630
    OP
    May 17, 2017
    59
    spice630
    spice630
    OP
    May 18, 2017
    60
    update 2017-05-18
    新增中英互译插件,基于有道翻译 API:)可以撩外国妹纸撩撩撩。。
    only0jac
    only0jac
    May 22, 2017 via Android
    61
    试了一下,一小时内必掉线,且无法自动登录,楼主有这种情况吗?
    spice630
    spice630
    OP
    May 22, 2017
    62
    @only0jac
    贴下错误信息看下呢?
    only0jac
    only0jac
    May 22, 2017
    63
    only0jac
    only0jac
    May 22, 2017
    64
    @spice630 还有,不是说可以自动登陆么?
    spice630
    spice630
    OP
    May 23, 2017
    65
    @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
    spice630
    OP
    May 23, 2017
    66
    @only0jac
    代码有点乱,参考 travis/bot.go
    only0jac
    only0jac
    May 23, 2017
    67
    @spice630 谢谢,刚发现一个 bug,挂了有五六个小时,前一段时间正常,最后虽然后台显示没掉线,但已经收不到消息了,并且登陆手机微信也没显示网页在线
    only0jac
    only0jac
    May 23, 2017
    68
    @spice630 最后状态是 1102
    spice630
    spice630
    OP
    May 23, 2017
    69
    @only0jac
    1102 没有做处理, 之前并没有遇到过这个值。拉下最新的代码,已经把所有的异常 ret 都当错误抛出去了,这样会进入重登逻辑。
    目前还不清楚 1102 的意思。
    挂机期间 网络有波动不?
    spice630
    spice630
    OP
    May 23, 2017
    70
    @only0jac
    另外,你的截图里 有个%s,能贴下代码不,应该不是示例代码吧。
    only0jac
    only0jac
    May 23, 2017
    71
    @spice630 vps 挂机,国内 Windows 阿里云和国外 centos 都试过,无网络波动,在线不会超过半天,必掉线,截图的%s,是我把你的 logs 替换成了 fmt.println,不过我又换回来了,用的你原先的代码,然后错误却不输出了
    only0jac
    only0jac
    May 23, 2017
    72
    @spice630

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

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