„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Integration von Telegram Stars ⭐️ Payment in einen Python-Bot

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

Veröffentlicht am 01.09.2024
Durchsuche:264

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 löst den Bildkauf aus.
  • 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_paid übernehmen den Zahlungsüberprüfungs- und Bestätigungsprozess.
  • Bei 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.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/king_triton/integrating-telegram-stars-paid-in-a-python-bot-3667?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen Es
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3