内容简介:在本章中,你可以按教程在Mixin Messenger中创建一个bot来接收用户消息, 学到如何给机器人转
Mixin Network 是一个免费的 极速的端对端加密数字货币交易系统.
在本章中,你可以按教程在Mixin Messenger中创建一个bot来接收用户消息, 学到如何给机器人转 比特币 或者 让机器人给你转 比特币 .
课程简介
创建一个接受消息的机器人
通过本教程,你将学会如何用Go创建一个机器人APP,让它能接受消息.
Go 1.12 的安装:
从Go官网下载安装 Go
macOS
下载安装包 go1.12.darwin-amd64.pkg 双击运行,然后按提示安装, 最后将Go的bin目录加入到$PATH中.
echo 'export PATH="/usr/local/opt/go/libexec/bin:$PATH"' >> ~/.bash_profile source ~/.bashrc
如果一切正常,运行 go version 就可以看到如下提示了!
go version go version go1.11.5 darwin/amd64
Ubuntu 18.04
root@n3:/usr/local/bin# snap install go --classic
Ubuntu 16.04
mkdir /usr/local/src wget https://dl.google.com/go/go1.12.linux-amd64.tar.gz tar xvf go1.12.linux-amd64.tar.gz echo 'export PATH=/usr/local/src/go/bin:$PATH' >> ~/.bashrc root@n3:/usr/local/src# source ~/.bashrc
如果一切正常,运行 go version 就可以看到如下提示了!
root@n3:/usr/local/bin# go version go version go1.12 linux/amd64
创建Go的工作目录
强烈推荐为Go创建一个工作目录,这让你少了很多关于包的引用的麻烦。
macOS
mkdir ~/workspace/go echo 'export GOPATH="$HOME/workspace/go"' >> ~/.bash_profile source ~/.bash_profile
Ubuntu
mkdir ~/workspace/go echo 'export GOPATH="$HOME/workspace/go"' >> ~/.bashrc source ~/.bash_profile
安装 Mixin Network SDK for Go
root@n3:~# go get github.com/MooooonStar/mixin-sdk-go package github.com/MooooonStar/mixin-sdk-go: no Go files in /root/workspace/go/src/github.com/MooooonStar/mixin-sdk-go
不用担心 "no Go files" 的提示, ls 可以找到如下目录与文件,事实上,SDK分别在messenger,network中.
ls $GOPATH/src/github.com/MooooonStar/mixin-sdk-go README.md messenger network
在GOPATH下创建项目目录
cd ~/workspace/go/src mkdir mixin_labs-go-bot cd mixin_labs-go-bot
你好,世界!
创建第一个机器人APP
按下面的提示,到 mixin.one 创建一个APP tutorial .
生成相应的参数
记下这些 生成的参数
它们将用于main.go中.
在项目目录下,创建main.go,将生成的参数,替换成你的!
main.go
const ( UserId = "21042518-85c7-4903-bb19-f311813d1f51" PinCode = "911424" SessionId = "4267b63d-3daa-449e-bc13-970aa0357776" PinToken = "gUUxpm3fPRVkKZNwA/gk10SHHDtR8LmxO+N6KbsZ/jymmwwVitUHKgLbk1NISdN8jBvsYJgF/5hbkxNnCJER5XAZ0Y35gsAxBOgcFN8otsV6F0FAm5TnWN8YYCqeFnXYJnqmI30IXJTAgMhliLj7iZsvyY/3htaHUUuN5pQ5F5s=" //please delele the blank of PrivateKey the before each line PrivateKey = `-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQCDXiWJRLe9BzPtXmcVe6acaFTY9Ogb4Hc2VHFjKFsp7QRVCytx 3KC/LRojTFViwwExaANTZQ6ectwpAxIvzeYeHDZCXCh6JRFIYK/ZuREmYPcPQEWD s92Tv/4XTAdTH8l9UJ4VQY4zwqYMak237N9xEvowT0eR8lpeJG0jAjN97QIDAQAB AoGADvORLB1hGCeQtmxvKRfIr7aEKak+HaYfi1RzD0kRjyUFwDQkPrJQrVGRzwCq GzJ8mUXwUvaGgmwqOJS75ir2DL8KPz7UfgQnSsHDUwKqUzULgW6nd/3OdDTYWWaN cDjbkEpsVchOpcdkywvZhhyGXszpM20Vr8emlBcFUOTfpTUCQQDVVjkeMcpRsImV U3tPYyiuqADhBTcgPBb+Ownk/87jyKF1CZOPvJAebNmpfJP0RMxUVvT4B9/U/yxZ WNLhLtCXAkEAnaOEuefUxGdE8/55dUTEb7xrr22mNqykJaax3zFK+hSFBrM3gUY5 fEETtHnl4gEdX4jCPybRVc1JSFY/GWoyGwJBAKoLti95JHkErEXYavuWYEEHLNwv mgcZnoI6cOKVfEVYEEoHvhTeCkoWHVDZOd2EURIQ1eY18JYIZ0M4Z66R8DUCQCsK iKTR3dA6eiM8qiEQw6nWgniFscpf3PnCx/Iu3U/m5mNr743GhM+eXSj7136b209I YfEoQiPxRz8O/W+NBV0CQQDVPNqJlFD34MC9aQN42l3NV1hDsl1+nSkWkXSyhhNR MpobtV1a7IgJGyt5HxBzgNlBNOayICRf0rRjvCdw6aTP -----END RSA PRIVATE KEY-----` )
将上面的参数,替换成你在mixin.one生成的。
完整而又简洁的代码如下
package main import ( "context" "encoding/base64" "encoding/json" "log" "github.com/MooooonStar/mixin-sdk-go/messenger" mixin "github.com/MooooonStar/mixin-sdk-go/network" ) type Listener struct { *messenger.Messenger } // interface to implement if you want to handle the message func (l *Listener) OnMessage(ctx context.Context, msg messenger.MessageView, userId string) error { data, err := base64.StdEncoding.DecodeString(msg.Data) if err != nil { return err } if msg.Category == "PLAIN_TEXT" { log.Printf("I got a message, it said: %s", string(data)) return l.SendPlainText(ctx, msg.ConversationId, msg.UserId, string(data)) } else { log.Println("Unknown message!", msg.Category) return err } } const ( UserId = "21042518-85c7-4903-bb19-f311813d1f51" PinCode = "911424" SessionId = "4267b63d-3daa-449e-bc13-970aa0357776" PinToken = "gUUxpm3fPRVkKZNwA/gk10SHHDtR8LmxO+N6KbsZ/jymmwwVitUHKgLbk1NISdN8jBvsYJgF/5hbkxNnCJER5XAZ0Y35gsAxBOgcFN8otsV6F0FAm5TnWN8YYCqeFnXYJnqmI30IXJTAgMhliLj7iZsvyY/3htaHUUuN5pQ5F5s=" //please delele the blank of PrivateKey the before each line PrivateKey = `-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQCDXiWJRLe9BzPtXmcVe6acaFTY9Ogb4Hc2VHFjKFsp7QRVCytx 3KC/LRojTFViwwExaANTZQ6ectwpAxIvzeYeHDZCXCh6JRFIYK/ZuREmYPcPQEWD s92Tv/4XTAdTH8l9UJ4VQY4zwqYMak237N9xEvowT0eR8lpeJG0jAjN97QIDAQAB AoGADvORLB1hGCeQtmxvKRfIr7aEKak+HaYfi1RzD0kRjyUFwDQkPrJQrVGRzwCq GzJ8mUXwUvaGgmwqOJS75ir2DL8KPz7UfgQnSsHDUwKqUzULgW6nd/3OdDTYWWaN cDjbkEpsVchOpcdkywvZhhyGXszpM20Vr8emlBcFUOTfpTUCQQDVVjkeMcpRsImV U3tPYyiuqADhBTcgPBb+Ownk/87jyKF1CZOPvJAebNmpfJP0RMxUVvT4B9/U/yxZ WNLhLtCXAkEAnaOEuefUxGdE8/55dUTEb7xrr22mNqykJaax3zFK+hSFBrM3gUY5 fEETtHnl4gEdX4jCPybRVc1JSFY/GWoyGwJBAKoLti95JHkErEXYavuWYEEHLNwv mgcZnoI6cOKVfEVYEEoHvhTeCkoWHVDZOd2EURIQ1eY18JYIZ0M4Z66R8DUCQCsK iKTR3dA6eiM8qiEQw6nWgniFscpf3PnCx/Iu3U/m5mNr743GhM+eXSj7136b209I YfEoQiPxRz8O/W+NBV0CQQDVPNqJlFD34MC9aQN42l3NV1hDsl1+nSkWkXSyhhNR MpobtV1a7IgJGyt5HxBzgNlBNOayICRf0rRjvCdw6aTP -----END RSA PRIVATE KEY-----` ) func main() { ctx := context.Background() m := messenger.NewMessenger(UserId, SessionId, PrivateKey) l := &Listener{m} go m.Run(ctx, l) select {} }
编译与运行
执行 go build 将创建一个mixin_labs-go-bot,然后执行
cd mixin_labs-go-bot go build ./mixin_labs-go-bot
在手机安装 Mixin Messenger ,增加机器人为好友,(比如这个机器人是7000101639) 然后发送消息给它,效果如下!
源代码解释
WebSocket是建立在TCP基础之上的全双工通讯方式,连接到Mixin Network并发送"LISTPENDINGMESSAGES"消息,服务器以后会将收到的消息转发给此程序!
ctx := context.Background() m := messenger.NewMessenger(UserId, SessionId, PrivateKey) l := &Listener{m} go m.Run(ctx, l)
当服务器给机器人推送消息的时候,机器人会原封不动的回复回去.
func (l *Listener) OnMessage(ctx context.Context, msg messenger.MessageView, userId string) error { data, err := base64.StdEncoding.DecodeString(msg.Data) if err != nil { return err } if msg.Category == "PLAIN_TEXT" { log.Printf("I got a message, it said: %s", string(data)) return l.SendPlainText(ctx, msg.ConversationId, msg.UserId, string(data)) } else { log.Println("Unknown message!", msg.Category) return err } }
Mixin Messenger支持的消息类型很多,除了文本,还有图片,视频,语音等等,具体可到下面链接查看: WebSocket消息类型 .
完成
现在你的机器人APP运行起来了,你打算如何改造你的机器人呢?
完整的代码 在这儿
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Python 比特币 教程 之一:创建机器人
- 创建聊天机器人,第 3 部分: 使用认知(或人工智能)服务增强聊天机器人
- 美国大学生创建深度学习算法 “教会”机器人临摹手写和绘画内容
- 协作机器人行业
- 开源机器人自学指南
- python图灵机器人
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。