Heim >Backend-Entwicklung >Python-Tutorial >Integration von Telegram Stars ⭐️ Payment in einen Python-Bot

Integration von Telegram Stars ⭐️ Payment in einen Python-Bot

WBOY
WBOYOriginal
2024-08-27 06:06:02753Durchsuche

Heute zeige ich Ihnen, wie Sie Zahlungen in Ihrem Bot mit der internen Währung von Telegram, Telegram Stars ⭐️, einrichten.

Schritt 1: Erstellen Sie einen Bot

Erstellen Sie zunächst einen Bot mit BotFather. Wenn Sie mit diesem Prozess vertraut sind, können Sie Ihren eigenen Testbot verwenden. In diesem Beispiel verwende ich den Bot @repeats_bot.

Integrating Telegram Stars ⭐️ Payment in a Python Bot

Schritt 2: Bereiten Sie die Projektstruktur vor

Hier ist ein Beispiel Ihrer Projektstruktur:

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

Schritt 3: Bot-Code

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

Datenbank.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()

Code-Erklärung

Zahlungen mit Telegram Stars

  • payment_keyboard und start_keyboard erstellen Schaltflächen für die Benutzerinteraktion. Der erste Button ermöglicht die Bezahlung, der zweite leitet den Bildkauf ein.
  • handle_buy_image erstellt und sendet eine Rechnung zur Zahlung in der XTR-Währung. Hier kann „provider_token“ leer sein, da XTR kein Token benötigt.
  • handle_pre_checkout_query und handle_successful_zahlung übernehmen den Zahlungsüberprüfungs- und Bestätigungsprozess.
  • Nach erfolgreicher Zahlung sendet der Bot das Bild an den Benutzer und speichert die Zahlungsinformationen in der Datenbank.

Arbeiten mit der Datenbank

  • init_db erstellt die Zahlungstabelle, falls diese nicht vorhanden ist. In dieser Tabelle werden Informationen über den Benutzer, die Zahlung, den Betrag und die Währung gespeichert.
  • save_paid speichert Zahlungsinformationen in der Datenbank. Dies ist für mögliche Rückerstattungen und Transaktionsberichte erforderlich.

Wichtige Hinweise

  • Bot-Eigentümer-Zahlung: Wenn der Bot-Eigentümer versucht, einen Kauf innerhalb des Bots zu tätigen, wird der Kauf nicht abgeschlossen. Dies verhindert Betrug oder Fehlkäufe durch den Administrator.
  • Sterne verwalten: Sterne werden im Telegram-Bot gespeichert. Um den Kontostand anzuzeigen, gehen Sie zu den Bot-Einstellungen in Telegram, wählen Sie „Bot verwalten“ und klicken Sie auf „Kontostand“. Hier können Sie verdiente Sterne einsehen, verwalten, abheben oder für Werbung ausgeben.

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

Abschluss

Ihr Bot ist nun so eingerichtet, dass er Zahlungen über Telegram Stars akzeptiert und nach einem erfolgreichen Kauf ein Bild sendet. Stellen Sie sicher, dass alle Einstellungen und Daten in den Konfigurationsdateien korrekt sind.

Ich würde mich freuen, wenn Sie eine Reaktion oder einen Kommentar hinterlassen! Den vollständigen Quellcode finden Sie auch auf GitHub.

Das obige ist der detaillierte Inhalt vonIntegration von Telegram Stars ⭐️ Payment in einen Python-Bot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn