Rumah > Artikel > pembangunan bahagian belakang > Mengintegrasikan Bintang Telegram ⭐️ Pembayaran dalam Bot Python
Hari ini saya akan menunjukkan kepada anda cara untuk menyediakan pembayaran dalam bot anda menggunakan mata wang dalaman Telegram, Telegram Stars ⭐️.
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.
Berikut ialah contoh struktur projek anda:
TelegramStarsBot (root) |-img/ |-img-X9ptcIuiOMICY0BUQukCpVYS.png |-bot.py |-config.py |-database.py |-.env
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()
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')
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()
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!