

(1).png)
在 上一篇教程中, 我们创建了自动回复消息的机器人,当用户发送消息"Hello,World!"时,机器人会自动回复同一条消息!
第二课: 机器人接受比特币并立即退还用户
按本篇教程后学习后完成后,你的机器人将会接受用户发送过来的加密货币,然后立即转回用户。 完整代码如下: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.pycd 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---------
复制代码
开发者可以通过消息面板,给机器人转比特币,当机器人收到比特币后,马上返还给用户!<figure><figcaption></figcaption></figure>
事实上,用户可以发送任意的币种给机器人,它都能马上返还!
<figure><figcaption></figcaption></figure>
源代码解释
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 将币返还用户!
高级用法
coming soon!





.png)








.png)




.png)



.png)


