Python 比特幣教程之二: 機器人收發比特幣

圖片描述
在上一篇教程Python 比特幣 教程 之一:建立機器人中, 咱們建立了自動回覆消息的機器人,當用戶發送消息"Hello,World!"時,機器人會自動回覆同一條消息。python

第二課: 機器人接受比特幣並當即退還用戶

按本篇教程後學習後完成後,你的機器人將會接受用戶發送過來的加密貨幣,而後當即轉回用戶。
完整代碼以下:git

app.py
from mixin_ws_api import MIXIN_WS_API
from mixin_api import MIXIN_API
import mixin_config

import json
import time
from io import BytesIO
import base64
import gzip

try:
    import thread
except ImportError:
    import _thread as thread


def on_message(ws, message):
    inbuffer = BytesIO(message)

    f = gzip.GzipFile(mode="rb", fileobj=inbuffer)
    rdata_injson = f.read()
    rdata_obj = json.loads(rdata_injson)
    print("-------json object begin---------")
    print(rdata_obj)
    print("-------json object end---------")
    action = rdata_obj["action"]

    if rdata_obj["data"] is not None:
        print("data in message:",rdata_obj["data"])

    if rdata_obj["data"] is not None and rdata_obj["data"]["category"] is not None:
        print(rdata_obj["data"]["category"])

    if action == "CREATE_MESSAGE":

        data = rdata_obj["data"]
        msgid = data["message_id"]
        typeindata = data["type"]
        categoryindata = data["category"]
        userId = data["user_id"]
        conversationId = data["conversation_id"]
        dataindata = data["data"]
        created_at = data["created_at"]
        updated_at = data["updated_at"]

        realData = base64.b64decode(dataindata)

        MIXIN_WS_API.replayMessage(ws, msgid)

        print('userId', userId)
        print("created_at",created_at)

        if categoryindata == "PLAIN_TEXT":
            realData = realData.decode('utf-8')
            print("dataindata",realData)
            MIXIN_WS_API.sendUserText(ws, conversationId, userId, realData)
        elif categoryindata == "SYSTEM_ACCOUNT_SNAPSHOT":
            rdJs = json.loads(realData)
            if ( float(rdJs["amount"]) > 0 ):
                mixin_api.transferTo(userId, rdJs["asset_id"], rdJs["amount"], "")

if __name__ == "__main__":

    mixin_api = MIXIN_API(mixin_config)

    mixin_ws = MIXIN_WS_API(on_message=on_message)

    mixin_ws.run()

Hello Bitcoin!

在項目目錄下,執行 python app.pygithub

cd mixin_labs-python-bot
source ./bin/activate
(mixin_labs-python-bot) wenewzha:mixin_labs-python-bot wenewzhang$ python app.py
ws open
-------json object begin---------
{'id': 'fd6ce766-331a-11e9-92a9-20c9d08850cd', 'action': 'LIST_PENDING_MESSAGES'}
-------json object end---------

開發者能夠經過消息面板,給機器人轉比特幣,當機器人收到比特幣後,立刻返還給用戶!
transferjson

事實上,用戶能夠發送任意的幣種給機器人,它都能立刻返還!
pay-linksegmentfault

源代碼解釋

elif categoryindata == "SYSTEM_ACCOUNT_SNAPSHOT":
    rdJs = json.loads(realData)
    if ( float(rdJs["amount"]) > 0 ):
        mixin_api.transferTo(userId, rdJs["asset_id"], rdJs["amount"], "")

若是機器人收到幣,rdJs["amount"] 大於零;若是機器人支付幣給用戶,接收到的消息是同樣的,惟一不一樣的是,rdJs["amount"]是一個負數.
最後一步,調用SDK的 mixin_api.transferTo 將幣返還用戶!api

高級用法

coming soon!bash

Mixin Network的開發資源彙編app

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息