日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

mixin network_基于Mixin Network的Go语言比特币开发教程 : 用 Mixin Messenger 机器人接受和发送比特币...

發(fā)布時(shí)間:2023/12/18 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mixin network_基于Mixin Network的Go语言比特币开发教程 : 用 Mixin Messenger 机器人接受和发送比特币... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基于Mixin Network的Go語(yǔ)言比特幣開(kāi)發(fā)教程 : 用 Mixin Messenger 機(jī)器人接受和發(fā)送比特幣

在 上一篇教程中, 我們創(chuàng)建了自動(dòng)回復(fù)消息的機(jī)器人,當(dāng)用戶發(fā)送消息"Hello,World!"時(shí),機(jī)器人會(huì)自動(dòng)回復(fù)同一條消息!

按本篇教程后學(xué)習(xí)后完成后,你的機(jī)器人將會(huì)接受用戶發(fā)送過(guò)來(lái)的加密貨幣,然后立即轉(zhuǎn)回用戶。

完整代碼如下:

main.go

fpackage 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 == "SYSTEM_ACCOUNT_SNAPSHOT" {

var transfer messenger.TransferView

if err := json.Unmarshal(data, &transfer); err != nil {

return err

}

log.Println("I got a coin: ", transfer.Amount)

mixin.Transfer(msg.UserId,transfer.Amount,transfer.AssetId,"",messenger.UuidNewV4().String(),

PinCode,PinToken,UserId,SessionId,PrivateKey)

return nil

// return l.SendPlainText(ctx, msg.ConversationId, msg.UserId, string(data))

} else if msg.Category == "PLAIN_TEXT" {

log.Printf("I got a message, it said: %s", string(data))

if string(data) == "g" {

payLinkEOS := "https://mixin.one/pay?recipient=" +

msg.UserId + "&asset=" +

"6cfe566e-4aad-470b-8c9a-2fd35b49c68d" +

"&amount=" + "0.1" +

"&trace=" + messenger.UuidNewV4().String() +

"&memo="

payLinkBTC := "https://mixin.one/pay?recipient=" +

msg.UserId + "&asset=" +

"c6d0c728-2624-429b-8e0d-d9d19b6592fa" +

"&amount=" + "0.001" +

"&trace=" + messenger.UuidNewV4().String() +

"&memo="

log.Println(payLinkBTC)

BtnEOS := messenger.Button{Label: "Pay EOS 0.1", Color: "#0080FF", Action: payLinkEOS}

BtnBTC := messenger.Button{Label: "Pay BTC 0.0001", Color: "#00FF80", Action: payLinkBTC}

if err := l.SendAppButtons(ctx, msg.ConversationId, msg.UserId, BtnEOS, BtnBTC); err != nil {

return err

}

return nil

} else if string(data) == "a" {

card := messenger.AppCard{Title: "Pay BTC 0.0001", Description: "topay", Action: "http://www.google.cn",

IconUrl: "https://images.mixin.one/HvYGJsV5TGeZ-X9Ek3FEQohQZ3fE9LBEBGcOcn4c4BNHovP4fW4YB97Dg5LcXoQ1hUjMEgjbl1DPlKg1TW7kK6XP=s128"}

if err := l.SendAppCard(ctx, msg.ConversationId, msg.UserId, card); err != nil {

return err

}

return nil

} else if string(data) == "r" {

mixin.Transfer(msg.UserId,"0.0001","c6d0c728-2624-429b-8e0d-d9d19b6592fa","",messenger.UuidNewV4().String(),

PinCode,PinToken,UserId,SessionId,PrivateKey)

return nil

} else { 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+NBV0CQQDVPxqJlFD34MC9aQN42l3NV1hDsl1+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 {}

}

你好, 比特幣!

在項(xiàng)目目錄下編譯并執(zhí)行

cd mixin_labs-go-bot

go build

./mixin_labs-go-bot

開(kāi)發(fā)者可以通過(guò)消息面板,給機(jī)器人轉(zhuǎn)比特幣,當(dāng)機(jī)器人收到比特幣后,馬上返還給用戶!

事實(shí)上,用戶可以發(fā)送任意的幣種給機(jī)器人,它都能馬上返還!

源代碼解釋

if msg.Category == "SYSTEM_ACCOUNT_SNAPSHOT" {

var transfer messenger.TransferView

if err := json.Unmarshal(data, &transfer); err != nil {

return err

}

log.Println("I got a coin: ", transfer.Amount)

mixin.Transfer(msg.UserId,transfer.Amount,transfer.AssetId,"",messenger.UuidNewV4().String(),

PinCode,PinToken,UserId,SessionId,PrivateKey)

return nil

// return l.SendPlainText(ctx, msg.ConversationId, msg.UserId, string(data))

}

調(diào)用SDK的 mixin.Transfer 將幣返還用戶!

高級(jí)用法

APP_BUTTON_GROUP

在一些應(yīng)用場(chǎng)景,比如:有一個(gè)交易所想提供換幣服務(wù),將比特幣換成以太坊,EOS,比特幣現(xiàn)金等,

你想顯示給用戶一組按鈕,它們分別代表不同的幣與不同的數(shù)量,APP_BUTTON_GROUP可以幫你做到這一點(diǎn).

payLinkEOS := "https://mixin.one/pay?recipient=" +

msg.UserId + "&asset=" +

"6cfe566e-4aad-470b-8c9a-2fd35b49c68d" +

"&amount=" + "0.1" +

"&trace=" + messenger.UuidNewV4().String() +

"&memo="

payLinkBTC := "https://mixin.one/pay?recipient=" +

msg.UserId + "&asset=" +

"c6d0c728-2624-429b-8e0d-d9d19b6592fa" +

"&amount=" + "0.001" +

"&trace=" + messenger.UuidNewV4().String() +

"&memo="

log.Println(payLinkBTC)

BtnEOS := messenger.Button{Label: "Pay EOS 0.1", Color: "#0080FF", Action: payLinkEOS}

BtnBTC := messenger.Button{Label: "Pay BTC 0.001", Color: "#00FF80", Action: payLinkBTC}

if err := l.SendAppButtons(ctx, msg.ConversationId, msg.UserId, BtnEOS, BtnBTC); err != nil {

return err

}

這里演示給用戶BTC與EOS兩種,你還可以增加更多的按鈕.

APP_CARD

如果你覺(jué)得一組按鈕太單調(diào)了,可以試一下APP_CARD,它提供一個(gè)圖標(biāo)的鏈接

card := messenger.AppCard{Title: "CNB", Description: "Chui Niu Bi", Action: "http://www.google.cn",

IconUrl: "https://images.mixin.one/0sQY63dDMkWTURkJVjowWY6Le4ICjAFuu3ANVyZA4uI3UdkbuOT5fjJUT82ArNYmZvVcxDXyNjxoOv0TAYbQTNKS=s128"}

if err := l.SendAppCard(ctx, msg.ConversationId, msg.UserId, card); err != nil {

return err

}

總結(jié)

以上是生活随笔為你收集整理的mixin network_基于Mixin Network的Go语言比特币开发教程 : 用 Mixin Messenger 机器人接受和发送比特币...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。