用Python构建加密货币追踪Telegram机器人

1,356 阅读6分钟

在靠近用户的地方部署容器

本工程教育(EngEd)计划由科支持。

在全球范围内即时部署容器。Section是经济实惠、简单而强大的。

免费开始

用Python构建加密货币追踪Telegram机器人

2021年2月17日

Telegram机器人是由软件操作的账户,可以作为许多任务的便捷工具。本文将介绍什么是Telegram机器人,如何使用它们,以及它们在Python中的开发过程。我们还将建立一个Telegram机器人来跟踪加密货币,并定期发送价格更新,以更好地了解它们。

简介

Telegram是一个时尚的社交媒体平台,用于传递信息和隐私。

它的核心功能包括。

  • 向其他Telegram用户发送消息。
  • 呼叫联系人。
  • 发送文件和贴纸。
  • 创建群聊和频道。
  • 云备份

你可以在这里了解更多关于Telegram的信息。

Telegram的机器人是由软件操作的账户。

它们可以做很多事情,包括。

  • 教导用户。
  • 广播信息。
  • 玩游戏。
  • 充当搜索引擎。
  • 充当提醒者。
  • 向物联网(IoT)设备传递命令。
  • 与其他服务连接和整合。

@GroupButler_bot是一个Telegram机器人,用于管理Telegram群组。

telegram group butler

加密货币是存在于网络世界中的数字形式的货币。它们是点对点的,建立在区块链技术之上,是一种分布式的、去中心化的账本,没有中央机构。流行的加密货币包括比特币、以太坊、莱特币、Doge和瑞波币。

建立一个加密货币追踪器

加密货币是不稳定的,所以它们的价格每秒钟都在变化。也有许多加密货币存在,跟踪每一种加密货币可能很麻烦。加密货币追踪器将多种货币的价格聚集在一个地方,并在其价格变化时自我更新。

本文将通过使用Python消耗CryptoCompare API提供的数据来建立一个加密货币追踪器。

首先,我们需要安装Requests库,它通过提供允许Python程序进行HTTP请求的函数来扩展Python程序的功能。在这里,我们将使用它来与CryptoCompare API通信。

在终端中,输入。

pip install requests

第二,我们需要编写代码,负责向CryptoCompare发送请求,以获取我们希望跟踪的货币的当前价格。CryptoCompare提供了一个返回我们所需数据的端点,因此我们将消费该端点。

创建一个名为tracker.py 的文件,并在其中保存以下代码。

import requests


def get_prices():
    coins = ["BTC", "ETH", "XRP", "LTC", "BCH", "ADA", "DOT", "LINK", "BNB", "XLM"]

    crypto_data = requests.get(
        "https://min-api.cryptocompare.com/data/pricemultifull?fsyms={}&tsyms=USD".format(",".join(coins))).json()["RAW"]

    data = {}
    for i in crypto_data:
        data[i] = {
            "coin": i,
            "price": crypto_data[i]["USD"]["PRICE"],
            "change_day": crypto_data[i]["USD"]["CHANGEPCT24HOUR"],
            "change_hour": crypto_data[i]["USD"]["CHANGEPCTHOUR"]
        }

    return data


if __name__ == "__main__":
    print(get_prices())

这是上述代码执行时的预期输出。

crypto tracker output

建立一个Telegram机器人

第1步:在Telegram上启动BotFather

在Telegram上搜索@botfather ,并启动该机器人。BotFather是一个帮助我们创建和管理Telegram机器人界面的机器人。

telegram botfather

chatting with botfather

第2步:创建一个Telegram机器人界面

要用BotFather创建一个新的Bot。首先,使用/newbot 命令,这将触发BotFather向你询问你想创建的机器人的细节。

create new bot

supply bot info

在你提供了你的机器人的名称和用户名后,BotFather会给你HTTP令牌。该令牌用于通过Telegram API为你的机器人建立功能。

get bot token

第三步:通过Python连接到Telegram的API

首先,我们将安装几个Python库,使我们能够轻松地与Telegram API互动。如果你想在这里探索Telegram机器人的全部功能,你也可以参考Telegram的API文档。

在终端中,输入。

pip install telegram
pip install python_telegram_bot

第二,我们需要编写另一个Python脚本,它将连接到Telegram API,并监听发送给我们的机器人的消息,然后对它们作出回应。

创建一个名为bot.py 的文件,并在其中保存下面的代码。

import telegram
from telegram.ext import Updater
from telegram.ext import CommandHandler

telegram_bot_token = "your-telegram-token"

updater = Updater(token=telegram_bot_token, use_context=True)
dispatcher = updater.dispatcher


def start(update, context):
    chat_id = update.effective_chat.id
    context.bot.send_message(chat_id=chat_id, text="Hello World")


dispatcher.add_handler(CommandHandler("start", start))
updater.start_polling()

在上面的代码中,我们首先使用了Telegram库中的updater 类来监听发送到我们机器人的新消息,然后使用dispatcher 类的消息处理器。

然后,我们创建了一个command handler ,并将其分配给我们的调度器。command handler 是一个代码块,当机器人用户触发某个命令时被调用。

然后,我们使用Telegram库提供的send_message 方法,在我们的用户期望得到回应时,向他们发送消息。该方法接收一个名为chat_id 的参数,该参数与我们要发送的消息一起被唯一地分配给每个Telegram用户。

这是我们的Telegram机器人在执行bot.py 脚本时的预期响应,并向机器人发送消息(别忘了用你的API令牌替换占位符)。

find our bot

message our bot

将加密货币追踪整合到我们的机器人上

现在,我们有了一个跟踪加密货币价格的脚本和一个响应发送给它的消息的Telegram机器人。让我们建立一个Telegram机器人,从CryptoCompare获取加密货币数据,并将其发送给用户。

我们需要用以下代码更新我们的bot.py 文件。

import telegram
from telegram.ext import Updater
from telegram.ext import CommandHandler
from tracker import get_prices

telegram_bot_token = "your-telegram-token"

updater = Updater(token=telegram_bot_token, use_context=True)
dispatcher = updater.dispatcher


def start(update, context):
    chat_id = update.effective_chat.id
    message = ""

    crypto_data = get_prices()
    for i in crypto_data:
        coin = crypto_data[i]["coin"]
        price = crypto_data[i]["price"]
        change_day = crypto_data[i]["change_day"]
        change_hour = crypto_data[i]["change_hour"]
        message += f"Coin: {coin}\nPrice: ${price:,.2f}\nHour Change: {change_hour:.3f}%\nDay Change: {change_day:.3f}%\n\n"

    context.bot.send_message(chat_id=chat_id, text=message)


dispatcher.add_handler(CommandHandler("start", start))
updater.start_polling()

这是我们的Telegram机器人在执行bot.py 脚本,并向机器人发送消息时的预期响应。

testing our bot

结论

在这篇文章中,我们了解了什么是Telegram机器人,并建立了我们第一个Telegram机器人。我们还建立了一个跟踪加密货币价格的脚本,并将其整合到Telegram机器人中,为我们建立了一个方便的工具。

想进一步开发Telegram机器人,改进设计或查看示例代码?请查看GitHub Repo

你也可以在这里访问本文中构建的机器人。我希望这篇关于构建Telegram机器人的教程对你有用。

资源


同行评议的贡献者。Lalithnarayan C

类似文章

[

Deploy an NFT with Remix IDE and Opensea Hero Image

区块链

如何用Remix IDE和Opensea部署NFT

阅读更多

](www.section.io/engineering…

Developing Simple Blockchain App in Flutter Hero Image

区块链, 语言

如何在Flutter中开发一个简单的区块链应用程序

阅读更多

](www.section.io/engineering…

Proof Of Work Consensus Algorithm In The Blockchain Example Image

区块链

区块链中的工作证明共识算法

阅读更多

](www.section.io/engineering…)