Skip to main content
在本指南中,您将学习如何使用 Envio HyperIndex 创建一个 Telegram 机器人,每当 Monad 测试网上发生 WMON 代币转账时发送通知。我们将逐步完成索引器和 Telegram 机器人的设置。 Envio HyperIndex 是一个用于构建区块链应用后端的开放开发框架。它提供实时索引、从合约地址自动生成索引器,以及外部 API 调用触发器等功能。

前置条件

您需要安装以下工具:
  • Node.js v18 或更高版本
  • pnpm v8 或更高版本
  • Docker Desktop(在本地运行 Envio 索引器所必需)

设置项目

首先,创建并进入一个新目录:

获取合约 ABI

  1. 创建 abi.json 文件:
  1. 从浏览器复制 WrappedMonad 的 ABI
image of explorer
  1. 将 ABI 粘贴到您的 abi.json 文件中

初始化项目

运行初始化命令:
按提示操作:
  1. 询问文件夹名称时按回车(使用当前目录)
  2. 选择 TypeScript 作为您的语言
  3. 选择 Evm 作为区块链生态系统
  4. 选择 Contract Import 进行初始化
  5. 选择 Local ABI 作为导入方法
  6. 输入 ./abi.json 作为 ABI 文件路径
  7. 只选择 Transfer 事件进行索引
  8. 选择 <Enter Network Id> 并输入 10143(Monad 测试网链 ID)
  9. 输入 WrappedMonad 作为合约名称
  10. 输入合约地址:0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541
  11. 由于我们只索引一个合约,选择 I'm finished
  12. 选择创建或添加现有 API token。如果您选择创建新 token,将进入类似下图的页面:
new API token view 项目初始化完成后,您应该会在项目目录中看到以下项目结构。 envio dashboard 将以下代码添加到 config.yaml 文件,使事件处理器中能够获取交易哈希:
config.yaml
关于 field_selection 配置的更多详情请见此处

启动索引器

启动 Docker Desktop。 在项目目录下运行以下命令启动索引器:
您应该会在终端看到类似下图的内容;这意味着索引器正在同步,最终会追上链的最新区块。 envio indexer syncing 您还会在浏览器中自动打开这个页面,密码是 testing hasura local page 我们可以通过这个界面使用 GraphQL 查询索引器。结果取决于同步进度: query interface 目前,索引器正在追赶链的最新区块。完成同步后,索引器将能够识别最新的 WMON 转账。 我们现在可以先关闭索引器,继续进行 Telegram 集成。

创建 Telegram 机器人

  1. 访问 BotFather 创建您的机器人并获取 API token
  2. 将这些环境变量添加到您的 .env 文件:
获取您的 chat ID:
  1. 创建一个 Telegram 群组并添加您的机器人
  2. 向机器人发送 /start@YourBot /start
  3. 访问 https://api.telegram.org/bot<YourBOTToken>/getUpdates
  4. 查找频道的 chat ID(应以”-“开头)
如果您没有看到 chat ID,请尝试将机器人从群组中移除后重新添加。
Telegram 机器人现已就绪。

将 Telegram API 集成到 HyperIndex 事件处理器

在项目目录的 src 文件夹内创建 libs 文件夹,在其中创建 telegram.ts 文件并添加以下代码:
src/libs/telegram.ts
您会遇到一些错误,让我们来修复它们。 安装 axios
src 文件夹中创建一个名为 constants.ts 的文件并添加以下代码:
src/constants.ts
我们现在可以编辑 src 文件夹中的 EventHandlers.ts,添加发送 Telegram 消息的代码:
src/EventHandlers.ts
现在让我们修复导入错误。 src/libs 文件夹中创建 helpers.ts 文件,将以下代码粘贴进去:
src/libs/helpers.ts
就是这样!现在我们可以运行索引器,当索引器检测到 WMON 转账时,Telegram 机器人就会开始在 Telegram 频道中发送消息! example bot message 注意:截图是在消息格式修改之前拍摄的。如果您按照本指南操作,消息格式会略有不同。
您可能不会立即看到消息,因为索引器需要一些时间才能追上最新的区块。只有当索引器在已最终确定的区块中检测到 WMON 转账,且时间戳大于或等于索引器启动时间时,机器人才会为这些转账发送通知。