专栏首页Mixin NetworkPython 比特币教程之二: 机器人收发比特币

Python 比特币教程之二: 机器人收发比特币

在上一篇教程Python 比特币 教程 之一:创建机器人中, 我们创建了自动回复消息的机器人,当用户发送消息"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.py

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---------

开发者可以通过消息面板,给机器人转比特币,当机器人收到比特币后,马上返还给用户!

事实上,用户可以发送任意的币种给机器人,它都能马上返还!

源代码解释

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!

Mixin Network的开发资源汇编

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Ruby 比特币开发教程: 机器人接受比特币并立即退还用户

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

    Mixin Network
  • 基于Mixin Network的Ruby比特币开发教程

    Mixin Network 是一个免费的 极速的端对端加密数字货币交易系统. 在本章中,你可以按教程在Mixin Messenger中创建一个bot来接收用户...

    Mixin Network
  • 免费,开源的数字货币收款插件

    虽然区块链蓬勃发展,但是程序员要在网站上支持数字货币收款依然非常困难。无论是比特币,还是eos都需要安装全节点软件才能比较稳定的做到查询收款服务。然而目前的区块...

    Mixin Network
  • Java_数据交换_JAXB_用法入门

    JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程...

    shirayner
  • 开发中遇到一个数据库字段问题

    大牛不必浪费时间了,适合初学者。 今天遇到一个问题,数据库字段问题。 有一张表存储着用户消费记录,设计表时使用的是整形,后来增加需求,需要对业务做些改动,改过之...

    wangxl
  • jquery表单属性筛选元素

    $(":button") 选择所有按钮元素类型为按钮的元素。 等于$('input[type="button"]') $(":checkbox") ...

    用户1197315
  • sql无限递归查询

    --------------所有子集数据包括自己--------------------- CREATE PROCEDURE ALLSON @ID INT AS...

    Java中文社群_老王
  • Spring Boot 快速入门系列(IV)—— 数据操作篇之 MyBatis

    从《Spring Boot 快速入门系列》数据操作篇前两篇中(Spring Boot 快速入门系列(II)—— 数据操作篇之 Spring Data JPA,S...

    IT技术小咖
  • 腾讯喻帅:腾讯云智慧零售产品发布

    腾讯云智慧零售产品总监喻帅,在云+未来峰会的智慧零售专场进行了腾讯云智慧零售产品的发布,以下内容整理自演讲。

    Techeek
  • 苹果公司新专利将允许通过指纹识别解锁设备

    据“移动ID世界”网站(http://mobileidworld.com) 2016年4月报道,苹果公司提交了一项系统专利申请,该系统允许已同步iPhone手机...

    人工智能快报

扫码关注云+社区

领取腾讯云代金券