from telebot import types
from pymongo import MongoClient
mongo_url = 'mongodb+srv://useruser:[email protected]/?retryWrites=true&w=majority&appName=nekozu'
client = MongoClient(mongo_url)
db = client['redeem_db']
one_week_prem = db['1week_prem']
one_month_prem = db['1month_prem']
users_collection = db['users']
bot = telebot.TeleBot("7806705574:AAEBC97T47SSxOESRAY9Na1BY8Z78DebIWY")
# Function to create a payment keyboard
def payment_keyboard():
keyboard = types.InlineKeyboardMarkup()
button1 = types.InlineKeyboardButton(text="Pay 46 XTR", pay=True)
button2 = types.InlineKeyboardButton(text="Pay 276 XTR", pay=True)
keyboard.add(button1)
keyboard.add(button2)
return keyboard
# Function to create a keyboard with the "Buy Premium" button
def start_keyboard():
keyboard = types.InlineKeyboardMarkup()
button = types.InlineKeyboardButton(text="Buy Premium", callback_data="buy_premium")
keyboard.add(button)
return keyboard
@bot.message_handler(commands=['start'])
def handle_start(message):
bot.send_message(
message.chat.id,
"Welcome! Click the button below to purchase premium access.",
reply_markup=start_keyboard()
)
@bot.callback_query_handler(func=lambda call: call.data == "buy_premium")
def handle_buy_premium(call):
prices = [
types.LabeledPrice(label="1 Week Premium", amount=46),
types.LabeledPrice(label="1 Month Premium", amount=276)
]
bot.send_invoice(
call.message.chat.id,
title="Premium Access",
description="Choose your premium plan:\n1 Week: 46 stars\n1 Month: 276 stars",
invoice_payload="premium_purchase",
provider_token="",
currency="XTR",
prices=prices,
reply_markup=payment_keyboard()
)
@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)
@bot.message_handler(content_types=['successful_payment'])
def handle_successful_payment(message):
# Get payment details
payment_data = {
'user_id': message.from_user.id,
'username': message.from_user.username,
'payment_id': message.successful_payment.provider_payment_charge_id,
'amount': message.successful_payment.total_amount,
'currency': message.successful_payment.currency,
'timestamp': message.date
}
# Determine premium duration based on payment amount
amount = message.successful_payment.total_amount
if amount == 46:
one_week_prem.insert_one(payment_data)
duration = "1 week"
else:
one_month_prem.insert_one(payment_data)
duration = "1 month"
# Update user's premium status
users_collection.update_one(
{'user_id': message.from_user.id},
{'$set': {
'is_premium': True,
'premium_start': message.date,
'premium_duration': duration
}},
upsert=True
)
# Send confirmation message
bot.send_message(
message.chat.id,
f"
"Enjoy your premium features!
)
@bot.message_handler(commands=['paysupport'])
def handle_pay_support(message):
bot.send_message(
message.chat.id,
"Premium purchases using Telegram stars are non-refundable. "
"If you have any questions or issues, please contact our support."
)
bot.polling()
Подробнее здесь: https://stackoverflow.com/questions/791 ... nt-invalid