主页 > imtoken钱包苹果 > Ruby比特币开发教程总结

Ruby比特币开发教程总结

imtoken钱包苹果 2023-07-04 05:08:34

总结:在上一个教程中,我们创建了一个自动回复消息的机器人。 当用户发送消息时,机器人会自动回复同一条消息。 完成本教程后,您的机器人将接受用户发送的加密消息。 货币,然后立即转回给用户。

在上一个教程中,我们创建了一个自动回复消息的机器人。 当用户发送消息“Hello, World!”时,机器人会自动回复相同的消息!

完成本教程后,您的机器人将接受用户发送的加密货币并立即将其转回给用户。 下面是完整的源代码,创建一个 websocket_mixin_bot.rb 并尝试一下!

require "faye/websocket"
require "eventmachine"
require "json"
require "zlib"
require "mixin_bot"
require "yaml"
yaml_hash = YAML.load_file("./config.yml")
MixinBot.client_id  = yaml_hash["MIXIN_CLIENT_ID"]
MixinBot.session_id = yaml_hash["MIXIN_SESSION_ID"]
MixinBot.client_secret = yaml_hash["MIXIN_CLIENT_SECRET"]
MixinBot.pin_token   = yaml_hash["MIXIN_PIN_TOKEN"]
MixinBot.private_key = yaml_hash["MIXIN_PRIVATE_KEY"]
access_token = MixinBot.api.access_token("GET","/","")
puts access_token
authorization = format("Bearer %s", access_token)
EM.run {
  ws = Faye::WebSocket::Client.new("wss://blaze.mixin.one/", ["Mixin-Blaze-1"],
    :headers => { "Authorization" => authorization }
  )
  ws.on :open do |event|

比特币合约机器人_比特币的合约交易什么意思_比特币合约对冲锁仓

p [:open] ws.send(MixinBot.api.list_pending_message) end ws.on :message do |event| p [:message] data = event.data msg = MixinBot.api.read_message(data) jsmsg = JSON.parse msg p jsmsg # p jsmsg["data"] if jsmsg["action"] == "CREATE_MESSAGE" && jsmsg["data"] != nil msgid = jsmsg["data"]["message_id"] ws.send(MixinBot.api.acknowledge_message_receipt(msgid)) if jsmsg["data"]["category"] == "PLAIN_TEXT" conversation_id = jsmsg["data"]["conversation_id"] decoded_msg = Base64.decode64 jsmsg["data"]["data"] p decoded_msg if decoded_msg == "?" or decoded_msg == "h" or decoded_msg == "H" reply_msg = "?: help " + "1: Payment link for APP_CARD " + "2: Payment link for APP_BUTTON_GROUP " reply_msg = MixinBot.api.plain_text_message(conversation_id,reply_msg) ws.send(reply_msg) elsif (decoded_msg == "1") payLinkEOS = "https://mixin.one/pay?recipient=" + "a1ce2967-a534-417d-bf12-c86571e4eefa" + "&asset=" + "6cfe566e-4aad-470b-8c9a-2fd35b49c68d" + "&amount=0.001" + "&trace=" + SecureRandom.uuid + "&memo="

比特币合约机器人_比特币的合约交易什么意思_比特币合约对冲锁仓

msgData = { "icon_url":"https://mixin.one/assets/98b586edb270556d1972112bd7985e9e.png", "title":"Pay 0.001 EOS", "description":"pay", "action":payLinkEOS } ws.send(MixinBot.api. app_card_message(conversation_id, msgData)) elsif decoded_msg == "2" payLinkEOS = "https://mixin.one/pay?recipient=" + "a1ce2967-a534-417d-bf12-c86571e4eefa" + "&asset=" + "6cfe566e-4aad-470b-8c9a-2fd35b49c68d" + "&amount=0.001" + "&trace=" + SecureRandom.uuid + "&memo=" payLinkEOS = "https://mixin.one/pay?recipient=" + MixinBot.client_id + "&asset=" + "6cfe566e-4aad-470b-8c9a-2fd35b49c68d" + "&amount=0.001" + "&trace=" + SecureRandom.uuid + "&memo=" payLinkBTC = "https://mixin.one/pay?recipient=" + MixinBot.client_id + "&asset=" + "c6d0c728-2624-429b-8e0d-d9d19b6592fa" + "&amount=0.0001" + "&trace=" + SecureRandom.uuid + "&memo=" button1 = { label: "Pay 0.001 EOS", color: "#FFABAB", action: payLinkEOS }

比特币合约对冲锁仓_比特币合约机器人_比特币的合约交易什么意思

button2 = { label: "Pay 0.0001 BTC", color: "#00EEFF", action: payLinkBTC } buttons = [button1,button2] ws.send(MixinBot.api. app_button_group_message(conversation_id, jsmsg["data"]["user_id"], buttons)) p "send app button group" else reply_msg = MixinBot.api.plain_text_message(conversation_id,decoded_msg) ws.send(reply_msg) end end if jsmsg["data"]["category"] == "SYSTEM_ACCOUNT_SNAPSHOT" jsdata = JSON.parse (Base64.decode64(jsmsg["data"]["data"])) p jsdata["amount"] if jsdata["amount"].to_f > 0 p "The Bot got coins:" + jsdata["amount"] transInfo = MixinBot.api.create_transfer(MixinBot.api.encrypt_pin(yaml_hash["MIXIN_PIN_CODE"]), { asset_id: jsdata["asset_id"], opponent_id: jsdata["opponent_id"], amount: jsdata["amount"], trace_id: SecureRandom.uuid, memo: "from ruby" }) p transInfo end

比特币合约对冲锁仓_比特币的合约交易什么意思_比特币合约机器人

end end end ws.on :error do |event| p [:error] end ws.on :close do |event| p [:close, event.code, event.reason] ws = nil end }

你好我的硬币!

在项目目录下,执行ruby websocket_mixin_bot.rb

ruby websocket_mixin_bot.rb

wenewzha:mixin_labs-ruby-bot wenewzhang$ ruby websocket_mixin_bot.rb
[:open]
[:message]
{"id"=>"1003b2b5-b8e4-4b54-bd03-983c61f64869", "action"=>"LIST_PENDING_MESSAGES"}

如果控制台显示“LIST_PENDING_MESSAGES”,则说明连接mixin.one成功,正在监听用户发送的消息!

按帮助进行操作,发送消息获取相应的支付提示

1 机器人回复APP_CARD支付链接。

2 机器人回复APP_BUTTON_GROUP支付链接。

? or help : 显示帮助

点击上面的链接比特币合约机器人,会弹出一个窗口,输入你的密码,给机器人打币!

Mixin Messenger 支持的消息类型

如下图,用户点击支付链接,输入密码比特币合约机器人,向机器人支付0.01 EOS,机器人立即返还给用户!

各位开发者,您也可以在消息控制面板点击转账,直接给机器人转币! 还是老样子 马上退货!

源码解释

比特币合约对冲锁仓_比特币合约机器人_比特币的合约交易什么意思

if jsmsg["data"]["category"] == "SYSTEM_ACCOUNT_SNAPSHOT"
  jsdata =  JSON.parse (Base64.decode64(jsmsg["data"]["data"]))
  p jsdata["amount"]
  if jsdata["amount"].to_f > 0
    p "The Bot got coins:" + jsdata["amount"]
    transInfo = MixinBot.api.create_transfer(MixinBot.api.encrypt_pin(yaml_hash["MIXIN_PIN_CODE"]),
                                      {
                                        asset_id: jsdata["asset_id"],
                                        opponent_id: jsdata["opponent_id"],
                                        amount: jsdata["amount"],
                                        trace_id: SecureRandom.uuid,
                                        memo: "from ruby"
                                      })
     p transInfo
  end
end

如果机器人收到硬币,

jsdata["amount"]

大于零; 如果机器人向用户付款,收到的消息是一样的,唯一的区别是

jsdata["amount"]

是一个负数。

transInfo = MixinBot.api.create_transfer(MixinBot.api.encrypt_pin(yaml_hash["MIXIN_PIN_CODE"]),
                                  {
                                    asset_id: jsdata["asset_id"],
                                    opponent_id: jsdata["opponent_id"],
                                    amount: jsdata["amount"],
                                    trace_id: SecureRandom.uuid,
                                    memo: "from ruby"
                                  })
 p transInfo

最后一步就是调用MixinSDK把币还给用户!

完整代码在这里