Mixin Network 是一个免费极速的点对点加密数字货币交易系统.
在本章中,你可以按教程在Mixin Messenger中创建一个bot来接收用户消息, 学到如何给机器人转比特币 或者 让机器人给你转比特币.

Mixin Network的开发资源汇编

课程简介

  1. 创建一个接受消息的机器人
  2. 机器人接受比特币并立即退还用户

创建一个接受消息的机器人

通过本教程,你将学会如何用Python创建一个机器人APP,让它能接受消息.

Python 3 安装:

本教程基于Python 3.7.2, 所以你需要安装Python 3.7.2 或 以上的版本.

on macOS

brew upgrade
brew install python@3

on Ubuntu, 从第三方的APT源中安装.

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa

当出现下面的提示时,按"回车"继续.

Press [ENTER] to continue or Ctrl-c to cancel adding it.

重新更新一次apt源, 再安装python3.7, python3.7-venv

sudo apt update
sudo apt install python3.7 python3.7-venv
sudo ln -s /usr/bin/python3.7 /usr/bin/python3

检查安装是否成功了,需要检查python3与python3-venv, 正确的提示如下:

$ python3 -V
Python 3.7.2
root@n2:~ python3 -m venv -h
usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear][--upgrade] [--without-pip] [--prompt PROMPT]ENV_DIR [ENV_DIR ...]
Creates virtual Python environments in one or more target directories.
positional arguments:ENV_DIR               A directory to create the environment in.optional arguments:-h, --help            show this help message and exit--system-site-packagesGive the virtual environment access to the systemsite-packages dir.--symlinks            Try to use symlinks rather than copies, when symlinksare not the default for the platform.--copies              Try to use copies rather than symlinks, even whensymlinks are the default for the platform.--clear               Delete the contents of the environment directory if italready exists, before environment creation.--upgrade             Upgrade the environment directory to use this versionof Python, assuming Python has been upgraded in-place.--without-pip         Skips installing or upgrading pip in the virtualenvironment (pip is bootstrapped by default)--prompt PROMPT       Provides an alternative prompt prefix for thisenvironment.Once an environment has been created, you may wish to activate it, e.g. by
sourcing an activate script in its bin directory

创建 mixin_labs-python-bot 项目

你首先需要创建项目目录,初始化"虚拟环境",然后安装需要的软件包.

mkdir mixin_labs-python-bot
cd mixin_labs-python-bot
python3 -m venv ./

python3 -m venv 指令完成之后, 项目目录如下:

wenewzha:mixin_labs-python-bot wenewzhang$ ls
bin        include        lib        pyvenv.cfg

当"虚拟环境"创建成功后,需要激活它, 通过执行bin目录下相应的activate文件完成.

wenewzha:mixin_labs-python-bot wenewzhang$ source ./bin/activate
(mixin_labs-python-bot) wenewzha:mixin_labs-python-bot wenewzhang$

成功激活后,可以直接执行python或pip了,这时,不再需要输入他们的完整路径了.

在"虚拟环境"里安装必需的包

创建一个必需包的list

requirements.txt

cryptography==2.4.2
pycparser==2.19
pycryptodome==3.7.2
PyJWT==1.7.1
python-dateutil==2.7.5
PyYAML==3.13
requests==2.21.0
websocket-client==0.54.0

通过pip升级pip包本身, 并安装必需包.

pip install --upgrade pip
pip install -r requirements.txt

下载 Mixin Network的python 3的API

wget https://github.com/includeleec/mixin-python3-sdk/raw/master/mixin_ws_api.py
wget https://github.com/includeleec/mixin-python3-sdk/raw/master/mixin_api.py
wget https://github.com/includeleec/mixin-python3-sdk/raw/master/mixin_config.py

你好,世界!

创建第一个机器人APP

按教程,到mixin.one创建一个APP[tutorial].

生成相应的参数

生成必要的参数并且记下来
它们将用于mixin_config.py中.

在项目目录下,创建mixin_config.py,将生成的参数,替换成你的!

mixin_config.py

client_id= 'ed882a39-0b0c-4413-bbd9-221cdeee56bf'
client_secret = '8d7ec7b9c8261b6c7bd6309210496ca4b72bce9efc7e49be14a428ce49ff7202'pay_pin = '599509'
pay_session_id = 'bd53b6a4-e79a-49e5-ad04-36da518354f6'
pin_token = "nVREh0/Ys9vzNFCQT2+PKcDN2OYAUSH8CidwHqDQLOCvokE7o6wtvLypjW9iks/RsnBM6N4SPF/P3bBW254YHGuDZXhitDEWOGkXs7v8BxMQxf+9454qTkMSpR9xbjAzgMXnSyHrNVoBtsc/Y+NvemB3VxPfsCOFHasiMqAa5DU="private_key = """-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCnaoO1SdPxggEpAIUdM/8Ll4FOqlXK7vwURHr4FFi6hnQ1I79g
pZSlJdzjr24WcIuNi6kVdXVIpyzZJGXS2I72dpGs5h1jKxL8AWIUVL2axZXqTJNi
c4wj6GJ4gDRP2U9I9gae+S/frM6KP8TioV0OcbmrlfrwI0OElLH3363y1wIDAQAB
AoGAduaGLi4F8cMkMculvqzcGY57jrQZBGyg6YANWb2Rmr+9LrR5yhkvLe9rJuXE
KPm7k0a6SnxGVNguWPWpv4qAVVGAJ0eb8ETXTRO20HlKmcbxfFdDtHBDV3QufNa1
h3mNEsqWDNCDdAm7p/EZwfG2F9+nmeXLfip7R1I72qbK0wkCQQDiJR6NEGVwbj8H
K8kRpzY1D9lPqp1ZMrma5AFYGZIb5voTxLjRpYdxQJHi7CCdE1zgqJOXvA3jj/io
f7bMIJY7AkEAvYSSC5H+fUKAjyjeCTGJBBKoPDsq+aALAYLWf77sGXE9BBmhhY0l
iwmbj8X6/qZtQ0yEzdT/OSdiYL86CcrgFQJBALz/sMzMSzrvqJVhrqWmTdOC72d5
fA+0KRKeQ9FRbZ8MJyymWKA96zhncoVoOsmMCS9pNBC4BhONm4+XTTrEcUkCQQCo
DWB8Bg/G/yuExtZtDJHVHL41+rmW9UYNJvoR+TjfLrzOX/QMuyapbfGVwhdZrDaD
UN0KsG9JPRVNeQR8HnwpAkACrr9cNp1H1bytHG9a6L+5cVHkRhqqEYWVO41MhgZF
5bIKx5OXCJB2VwY7fjFet2KxTHGfEZt/khjFNZzVX7lN
-----END RSA PRIVATE KEY-----"""

需要替换的参数包括: client_id, client_secret, pay_pin, pin_token, pay_session_id, private key.

创建 app-mini.py 文件, 内容如下:

app-mini.py

from mixin_ws_api import MIXIN_WS_API
from mixin_api import MIXIN_API
import mixin_configimport json
import time
from io import BytesIO
import base64
import gziptry:import thread
except ImportError:import _thread as threaddef 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"]realData = base64.b64decode(dataindata)MIXIN_WS_API.replayMessage(ws, msgid)if 'error' in rdata_obj:returnif categoryindata == "PLAIN_TEXT":realData = realData.decode('utf-8')print("dataindata",realData)MIXIN_WS_API.sendUserText(ws, conversationId, userId, realData)if __name__ == "__main__":mixin_api = MIXIN_API(mixin_config)mixin_ws = MIXIN_WS_API(on_message=on_message)mixin_ws.run()

运行 app-mini.py, 记得要先激活“虚拟环境”哦!

(mixin_labs-python-bot) wenewzha:mixin_labs-python-bot wenewzhang$ python app-mini.py
...

如果一切正常,将会有如下提示:

(mixin_labs-python-bot) wenewzha:mixin_labs-python-bot wenewzhang$ python app-mini.py
ws open
-------json object begin---------
{'id': '1c798948-30eb-11e9-a20e-20c9d08850cd', 'action': 'LIST_PENDING_MESSAGES'}
-------json object end---------

在手机安装 Mixin Messenger,增加机器人为好友,(比如这个机器人是7000101639) 然后发送消息给它,效果如下!

源代码解释

WebSocket是建立在TCP基础之上的全双工通讯方式,我们需要建立一个loop循环来维持通迅。

if __name__ == "__main__":mixin_api = MIXIN_API(mixin_config)mixin_ws = MIXIN_WS_API(on_message=on_message)mixin_ws.run()

每接收到一个消息,需要按消息编号(message_id)给服务器回复一个"已读"的消息,避免服务器在机器人重新登入后,再次发送处理过的消息!

        MIXIN_WS_API.replayMessage(ws, msgid)

机器人程序完整回复用户的信息

if categoryindata == "PLAIN_TEXT":realData = realData.decode('utf-8')print("dataindata",realData)MIXIN_WS_API.sendUserText(ws, conversationId, userId, realData)    

Mixin Messenger支持的消息类型很多,具体可到下面链接查看: WebSocket消息类型.

完成

现在你的机器人APP运行起来了,开始玩吧。

完整的代码在这儿

Python 比特币 教程 之一:创建机器人相关推荐

  1. Turtlebot4入门教程-演示-创建节点(Python)

    来源:Turtlebot4入门教程-演示-创建节点(Python) - 创客智造 说明: 本教程将介绍创建 ROS2 包和用 Python 编写 ROS2 节点的步骤. 有关 C++ 示例,请单击此处 ...

  2. Python tkinter教程-01:创建窗口

    Python tkinter教程-01:创建窗口 文章目录 0 准备工作 1 创建空白窗体 2 窗口标题 3 窗口大小与位置 4 锁定窗口大小 5 窗口图标 6 隐藏与显示窗口 其它 0 准备工作 要 ...

  3. 基于Windows下Anaconda创建python虚拟环境教程

    基于Windows下Anaconda创建python虚拟环境教程 Anaconda是目前最流行的数据科学平台以及现代机器学习的基础.同时Anaconda 也是一个Python的发行版,专注于人工智能, ...

  4. python基础教程-学习python有什么好的视频教程?

    干货来袭,以下均为python好的学习视频,我们先从python的入门教程开始分享起! python入门教程(600集)https://www.bilibili.com/video/BV1ex411x ...

  5. 【毕业设计_课程设计】基于python的微信公众平台机器人的设计与实现

    文章目录 0 项目说明 项目介绍 项目工程 0 项目说明 基于python的微信公众平台机器人的设计与实现 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 项目介绍 1.NGINX做负载均衡, ...

  6. 毕业设计 python的微信公众平台机器人

    文章目录 0 项目说明 项目介绍 项目工程 0 项目说明 基于python的微信公众平台机器人的设计与实现 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 项目介绍 1.NGINX做负载均衡, ...

  7. python轻松实现与图灵机器人的人机交互

    要实现与图灵机器人的交互,首先就要调用图灵机器人的API接口,我们首先创建一个机器人,步骤如下: 到图灵机器人官网,登陆注册成为用户. 登陆后点击创建机器人,每个用户可免费申请5个机器人,创建成功后如 ...

  8. 菜鸟弟弟从零开始的爬取Bilibili弹幕的Python爬虫教程-哔哩哔哩 - ( ゜- ゜)つロ 干杯~

    从零开始的爬取Bilibili弹幕的Python爬虫教程 或许可以作为一个爬虫小白的练手的demo? 还是先看看什么是爬虫吧!(还有Bilibili! ) 网络爬虫: 网络爬虫(又称为网页蜘蛛,网络机 ...

  9. Python 自动化教程(1) 概述,第一篇 Excel自动化首篇

    人生苦短, 我用Python!  Python语法简炼.易上手,且有丰富的库可用,实现一个应用很简洁. Python常用于自动化.自动化的基本含义,是把人的动作写成程序,让计算机代替人工作.主要分为几 ...

最新文章

  1. h5滚动时侧滑出现_H5触摸事件中如何判断用户滑动方向
  2. 用VS.NET中的测试工具测试ASP.NET程序
  3. mysql同步 触发器_mysql 触发器(数据库的同步)
  4. CISS.SideMenu的bug
  5. 自拟计算机作文100字,介绍电脑的作文100字
  6. MySQL——MySQL的数据查询功能
  7. mysql编码无效_mysql的严格模式与无效字符编码问题
  8. wxWidgets:wxGridEvent类用法
  9. xtrabackup 9.0备份出错的解决方法
  10. 普元连接mysql_普元EOS 案例 - 还有一行代码的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. 思科isis路由的优先级_华为 路由双点双向引入
  12. js html 转换为富文本,如何将富文本得到的html转换为pdf?
  13. window下Jekyll+github搭建自己的博客
  14. spark checkpoint
  15. 安卓版 网易云音乐 6.4.3
  16. 2021年全国大学生网络安全邀请赛暨第七届“东华杯“上海市大学生网络安全大赛Writeup
  17. windows10桌面壁纸的储存地址在哪里
  18. linux smtp ip伪造,邮箱伪造之搭建匿名SMTP服务器
  19. Spring GA、PRE、SNAPSHOT 版本含义及区别
  20. 关于CFree5.0中设置支持C99模式

热门文章

  1. 2020届 AAAI Fellow名单新鲜出炉!!!深度学习三巨头终于齐聚
  2. 华人博士发127页长文:自然语言处理中图神经网络从入门到精通
  3. 成立两年,他们用产品描绘出了基于第三代AI的基础设施蓝图
  4. BERT的嵌入层是如何实现的?看完你就明白了
  5. 明年东京奥运会,将首次引进人脸识别系统
  6. 凭着这把AutoML利剑,这家AI公司荣登 IEEE ISI“铁王座”
  7. 面对千亿客服市场:曾经人工当道,如今AI为王
  8. 了解机器学习回归的3种最常见的损失函数
  9. 2019年汽车AI计算技术及市场趋势
  10. 吴恩达深度学习笔记(83)-LeNet-5、AlexNet和VGGNet网络知多少