使用 TON 的商店机器人
在这篇文章中,我们将引导你完成在 Telegram 机器人中接受付款的过程。
📖 你将学到什么
在这篇文章中,你将学习如何:
- 使用 Python + Aiogram 创建一个 Telegram 机器人
- 使用公开的 TON API(TON Center)
- 使用 SQlite 数据库
最后:通过前面步骤的知识,在 Telegram 机器人中接受付款 。
📚 在我们开始之前
确保你已经安装了最新版本的 Python,并且已经安装了以下包:
- aiogram
- requests
- sqlite3
🚀 我们开始吧!
我们将按照以下顺序操作:
- 使用 SQlite 数据库
- 使用公开的 TON API(TON Center)
- 使用 Python + Aiogram 创建一个 Telegram 机器人
- 盈利!
让我们在项目目录中创建以下四个文件:
telegram-bot
├── config.json
├── main.py
├── api.py
└── db.py
配置
在 config.json
中,我们将存储我们的机器人令牌和我们的公开 TON API 密钥。
{
"BOT_TOKEN": "Your bot token",
"MAINNET_API_TOKEN": "Your mainnet api token",
"TESTNET_API_TOKEN": "Your testnet api token",
"MAINNET_WALLET": "Your mainnet wallet",
"TESTNET_WALLET": "Your testnet wallet",
"WORK_MODE": "testnet"
}
在 config.json
中,我们决定我们将使用哪个网络:testnet
或 mainnet
。
数据库
创建数据库
这个示例使用本地 Sqlite 数据库。
创建 db.py
。
开始使用数据库,我们需要导入 sqlite3 模块和一些用于处理时间的模块。
import sqlite3
import datetime
import pytz
sqlite3
—用于操作 sqlite 数据库的模块datetime
—用于处理时间的模块pytz
—用于处理时区的模块
接下来,我们需要创建一个数据库的连接和一个用于操作它的游标:
locCon = sqlite3.connect('local.db', check_same_thread=False)
cur = locCon.cursor()
如果数据库不存在,将会自动创建。
现在我们可以创建表格了。我们有两个表格。
交易:
CREATE TABLE transactions (
source VARCHAR (48) NOT NULL,
hash VARCHAR (50) UNIQUE
NOT NULL,
value INTEGER NOT NULL,
comment VARCHAR (50)
);
source
—付款人的钱包地址hash
—交易哈希value
—交易价值comment
—交易备注
用户:
CREATE TABLE users (
id INTEGER UNIQUE
NOT NULL,
username VARCHAR (33),
first_name VARCHAR (300),
wallet VARCHAR (50) DEFAULT none
);
id
—Telegram 用户 IDusername
—Telegram 用户名first_name
—Telegram 用户的名字wallet
—用户钱包地址
在 users
表中,我们存储用户 :) 他们的 Telegram ID、@username、
名字和钱包。第一次成功付款时,钱包将被添加到数据库中。
transactions
表存储已验证的交易。
要验证交易,我们需要哈希、来源、值和备注。
要创建这些表格,我们需要运行以下函数:
cur.execute('''CREATE TABLE IF NOT EXISTS transactions (
source VARCHAR (48) NOT NULL,
hash VARCHAR (50) UNIQUE
NOT NULL,
value INTEGER NOT NULL,
comment VARCHAR (50)
)''')
locCon.commit()
cur.execute('''CREATE TABLE IF NOT EXISTS users (
id INTEGER UNIQUE
NOT NULL,
username VARCHAR (33),
first_name VARCHAR (300),
wallet VARCHAR (50) DEFAULT none
)''')
locCon.commit()
如果这些表格还没有被创建,这段代码将会创建它们。