Telegram Stars ⭐️ 支払いを Python ボットに統合
今日は、Telegram の内部通貨である Telegram Stars ⭐️ を使用してボットで支払いを設定する方法を説明します。
ステップ 1: ボットを作成する
まず、BotFather を使用してボットを作成します。このプロセスに慣れている場合は、独自のテスト ボットを使用できます。この例では、ボット @repeats_bot を使用します。
ステップ 2: プロジェクト構造を準備する
プロジェクト構造の例を次に示します:
TelegramStarsBot (root) |-img/ |-img-X9ptcIuiOMICY0BUQukCpVYS.png |-bot.py |-config.py |-database.py |-.env
ログイン後にコピー
ステップ 3: ボットコード
bot.py
import telebot from telebot import types from config import TOKEN from database import init_db, save_payment import os bot = telebot.TeleBot(TOKEN) # Initialize the database init_db() # Function to create a payment keyboard def payment_keyboard(): keyboard = types.InlineKeyboardMarkup() button = types.InlineKeyboardButton(text="Pay 1 XTR", pay=True) keyboard.add(button) return keyboard # Function to create a keyboard with the "Buy Image" button def start_keyboard(): keyboard = types.InlineKeyboardMarkup() button = types.InlineKeyboardButton(text="Buy Image", callback_data="buy_image") keyboard.add(button) return keyboard # /start command handler @bot.message_handler(commands=['start']) def handle_start(message): bot.send_message( message.chat.id, "Welcome! Click the button below to buy an image.", reply_markup=start_keyboard() ) # Handler for the "Buy Image" button press @bot.callback_query_handler(func=lambda call: call.data == "buy_image") def handle_buy_image(call): prices = [types.LabeledPrice(label="XTR", amount=1)] # 1 XTR bot.send_invoice( call.message.chat.id, title="Image Purchase", description="Purchase an image for 1 star!", invoice_payload="image_purchase_payload", provider_token="", # For XTR, this token can be empty currency="XTR", prices=prices, reply_markup=payment_keyboard() ) # Handler for pre-checkout queries @bot.pre_checkout_query_handler(func=lambda query: True) def handle_pre_checkout_query(pre_checkout_query): bot.answer_pre_checkout_query(pre_checkout_query.id, ok=True) # Handler for successful payments @bot.message_handler(content_types=['successful_payment']) def handle_successful_payment(message): user_id = message.from_user.id payment_id = message.successful_payment.provider_payment_charge_id amount = message.successful_payment.total_amount currency = message.successful_payment.currency # Send a purchase confirmation message bot.send_message(message.chat.id, "✅ Payment accepted, please wait for the photo. It will arrive soon!") # Save payment information to the database save_payment(user_id, payment_id, amount, currency) # Send the image photo_path = 'img/img-X9ptcIuiOMICY0BUQukCpVYS.png' if os.path.exists(photo_path): with open(photo_path, 'rb') as photo: bot.send_photo(message.chat.id, photo, caption="?Thank you for your purchase!?") else: bot.send_message(message.chat.id, "Sorry, the image was not found.") # /paysupport command handler @bot.message_handler(commands=['paysupport']) def handle_pay_support(message): bot.send_message( message.chat.id, "Purchasing an image does not imply a refund. " "If you have any questions, please contact us." ) # Start polling bot.polling()
ログイン後にコピー
config.py
import os from dotenv import load_dotenv # Load environment variables from .env file load_dotenv() # Get values from environment variables TOKEN = os.getenv('TOKEN') DATABASE = os.getenv('DATABASE')
ログイン後にコピー
データベース.py
import sqlite3 from config import DATABASE def init_db(): with sqlite3.connect(DATABASE) as conn: cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS payments ( user_id INTEGER, payment_id TEXT, amount INTEGER, currency TEXT, PRIMARY KEY (user_id, payment_id) ) ''') conn.commit() def save_payment(user_id, payment_id, amount, currency): with sqlite3.connect(DATABASE) as conn: cursor = conn.cursor() cursor.execute(''' INSERT INTO payments (user_id, payment_id, amount, currency) VALUES (?, ?, ?, ?) ''', (user_id, payment_id, amount, currency)) conn.commit()
ログイン後にコピー
コードの説明
Telegram Stars での支払い
- payment_keyboard と start_keyboard は、ユーザー操作のためのボタンを作成します。最初のボタンで支払いが可能になり、2 番目のボタンで画像の購入が開始されます。
- handle_buy_image は、XTR 通貨を使用した支払いのための請求書を作成して送信します。ここで、XTR はトークンを必要としないため、provider_token は空にすることができます。
- handle_pre_checkout_query と handle_payment_payment は、支払いの検証と確認のプロセスを処理します。
- 支払いが成功すると、ボットはユーザーに画像を送信し、支払い情報をデータベースに保存します。
データベースの操作
- init_db は支払いテーブルが存在しない場合に作成します。このテーブルには、ユーザー、支払い、金額、通貨に関する情報が保存されます。
- save_payment は、支払い情報をデータベースに保存します。これは、払い戻しや取引レポートの可能性のために必要です。
重要な注意事項
- ボット所有者の支払い: ボット所有者がボット内で購入を行おうとしても、購入は完了しません。これにより、管理者による詐欺や誤った購入が防止されます。
- スターの管理: スターは Telegram ボット内に保存されます。残高を表示するには、Telegram のボット設定に移動し、[ボットの管理] を選択して、[残高] をクリックします。ここでは、獲得したスターを表示および管理したり、スターを引き出したり、広告に費やしたりできます。
結論
これで、ボットは Telegram Stars 経由で支払いを受け入れ、購入が成功した後に画像を送信するように設定されました。構成ファイル内のすべての設定とデータが正しいことを確認してください。
反応やコメントを残していただけると嬉しいです!完全なソース コードは GitHub で見つけることもできます。
以上がTelegram Stars ⭐️ 支払いを Python ボットに統合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
2週間前
By 尊渡假赌尊渡假赌尊渡假赌
レポ:チームメイトを復活させる方法
4週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
R.E.P.O.ファイルの保存場所:それはどこにあり、それを保護する方法は?
3週間前
By DDD

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7315
9


Java チュートリアル
1625
14


CakePHP チュートリアル
1348
46


Laravel チュートリアル
1261
25


PHP チュートリアル
1208
29

