"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > دمج نجوم Telegram ⭐️ الدفع في Python Bot

دمج نجوم Telegram ⭐️ الدفع في Python Bot

تم النشر بتاريخ 2024-09-01
تصفح:601

سأوضح لك اليوم كيفية إعداد عمليات الدفع في الروبوت الخاص بك باستخدام عملة Telegram الداخلية، Telegram Stars ⭐️.

الخطوة 1: إنشاء بوت

أولاً، قم بإنشاء روبوت باستخدام BotFather. إذا كنت على دراية بهذه العملية، فيمكنك استخدام روبوت الاختبار الخاص بك. في هذا المثال، سأستخدم الروبوت @repeats_bot.

Integrating Telegram Stars ⭐️ Payment in a Python Bot

الخطوة الثانية: إعداد هيكل المشروع

إليك مثال على هيكل مشروعك:

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 بإنشاء أزرار لتفاعل المستخدم. الزر الأول يسمح بالدفع، والثاني يبدأ عملية شراء الصورة.
  • يقوم Handle_buy_image بإنشاء وإرسال فاتورة للدفع باستخدام عملة XTR. هنا، يمكن أن يكون Provider_token فارغًا لأن XTR لا يتطلب رمزًا مميزًا.
  • يعالج Handle_pre_checkout_query و Handle_successful_Payment عملية التحقق من الدفع وتأكيده.
  • عند الدفع الناجح، يرسل الروبوت الصورة إلى المستخدم ويحفظ معلومات الدفع في قاعدة البيانات.

العمل مع قاعدة البيانات

  • يقوم init_db بإنشاء جدول المدفوعات إذا لم يكن موجودًا. يخزن هذا الجدول معلومات حول المستخدم والدفع والمبلغ والعملة.
  • save_Payment يحفظ معلومات الدفع في قاعدة البيانات. يعد هذا ضروريًا لعمليات استرداد الأموال المحتملة وتقارير المعاملات.

ملاحظات هامة

  • دفع مالك الروبوت: إذا حاول مالك الروبوت إجراء عملية شراء داخل الروبوت، فلن تكتمل عملية الشراء. وهذا يمنع الاحتيال أو عمليات الشراء الخاطئة التي يقوم بها المسؤول.
  • إدارة النجوم: يتم تخزين النجوم داخل روبوت Telegram. لعرض الرصيد، انتقل إلى إعدادات الروبوت في Telegram، وحدد "إدارة الروبوت"، ثم انقر فوق "الرصيد". هنا، يمكنك عرض وإدارة النجوم المكتسبة، أو سحبها، أو إنفاقها على الإعلانات.

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

خاتمة

تم الآن إعداد الروبوت الخاص بك لقبول الدفعات عبر Telegram Stars وإرسال صورة بعد عملية شراء ناجحة. تأكد من صحة جميع الإعدادات والبيانات الموجودة في ملفات التكوين.

سأكون ممتنًا إذا تركت رد فعل أو تعليقًا! يمكنك أيضًا العثور على كود المصدر الكامل على GitHub.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/king_triton/integrating-telegram-stars-Payment-in-a-python-bot-3667?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] للحذف هو - هي
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3