Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengintegrasikan Bintang Telegram ⭐️ Pembayaran dalam Bot Python

Mengintegrasikan Bintang Telegram ⭐️ Pembayaran dalam Bot Python

WBOY
WBOYasal
2024-08-27 06:06:02718semak imbas

Hari ini saya akan menunjukkan kepada anda cara untuk menyediakan pembayaran dalam bot anda menggunakan mata wang dalaman Telegram, Telegram Stars ⭐️.

Langkah 1: Buat Bot

Pertama, buat bot menggunakan BotFather. Jika anda sudah biasa dengan proses ini, anda boleh menggunakan bot ujian anda sendiri. Dalam contoh ini, saya akan menggunakan bot @repeats_bot.

Integrating Telegram Stars ⭐️ Payment in a Python Bot

Langkah 2: Sediakan Struktur Projek

Berikut ialah contoh struktur projek anda:

TelegramStarsBot (root)
|-img/
  |-img-X9ptcIuiOMICY0BUQukCpVYS.png
|-bot.py
|-config.py
|-database.py
|-.env

Langkah 3: Kod Bot

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')

pangkalan data.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()

Penerangan Kod

Pembayaran dengan Telegram Stars

  • payment_keyboard dan start_keyboard mencipta butang untuk interaksi pengguna. Butang pertama membenarkan pembayaran, dan butang kedua memulakan pembelian imej.
  • handle_buy_image mencipta dan menghantar invois untuk pembayaran menggunakan mata wang XTR. Di sini, provider_token boleh kosong kerana XTR tidak memerlukan token.
  • handle_pre_checkout_query dan handle_successful_payment mengendalikan proses pengesahan dan pengesahan pembayaran.
  • Setelah pembayaran berjaya, bot menghantar imej kepada pengguna dan menyimpan maklumat pembayaran dalam pangkalan data.

Bekerja dengan Pangkalan Data

  • init_db mencipta jadual pembayaran jika ia tidak wujud. Jadual ini menyimpan maklumat tentang pengguna, pembayaran, jumlah dan mata wang.
  • save_payment menyimpan maklumat pembayaran ke pangkalan data. Ini diperlukan untuk potensi bayaran balik dan laporan transaksi.

Nota Penting

  • Bayaran Pemilik Bot: Jika pemilik bot cuba membuat pembelian dalam bot, pembelian tidak akan selesai. Ini menghalang penipuan atau pembelian yang salah yang dibuat oleh pentadbir.
  • Bintang Urusan: Bintang disimpan dalam bot Telegram. Untuk melihat baki, pergi ke tetapan bot dalam Telegram, pilih "Urus Bot," dan klik "Baki." Di sini, anda boleh melihat dan mengurus bintang yang diperoleh, menarik baliknya atau membelanjakannya untuk pengiklanan.

Integrating Telegram Stars ⭐️ Payment in a Python Bot

Integrating Telegram Stars ⭐️ Payment in a Python Bot

Integrating Telegram Stars ⭐️ Payment in a Python Bot

Integrating Telegram Stars ⭐️ Payment in a Python Bot

Kesimpulan

Bot anda kini disediakan untuk menerima pembayaran melalui Telegram Stars dan menghantar imej selepas pembelian yang berjaya. Pastikan semua tetapan dan data dalam fail konfigurasi adalah betul.

Saya amat menghargainya jika anda meninggalkan reaksi atau komen! Anda juga boleh mendapatkan kod sumber lengkap di GitHub.

Atas ialah kandungan terperinci Mengintegrasikan Bintang Telegram ⭐️ Pembayaran dalam Bot Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn