```python
import os
from telegram import (
    Update,
    LabeledPrice,
    ReplyKeyboardMarkup,
    ReplyKeyboardRemove,
)
from telegram.ext import (
    ApplicationBuilder,
    CommandHandler,
    MessageHandler,
    CallbackQueryHandler,
    ContextTypes,
    PreCheckoutQueryHandler,
    PaymentHandler,
    filters,
)


# Замените на ваш токен бота и токен платежного провайдера
BOT_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
PAYMENT_PROVIDER_TOKEN = 'YOUR_PAYMENT_PROVIDER_TOKEN'


# Стоимость в минимальных единицах (например, 100 копеек = 1 рубль)
PRICE = 100  # 1 рубль


async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    user_id = update.effective_user.id
    # Здесь можно проверить, платил ли пользователь ранее
    # Для простоты предполагаем, что никто не платил
    await update.message.reply_text(
        "Добро пожаловать! Чтобы получить доступ к функциям бота, пожалуйста, произведите оплату.",
        reply_markup=ReplyKeyboardMarkup([["Оплатить"]], one_time_keyboard=True),
    )


async def payment(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_invoice(
        title="Доступ к боту",
        description="Оплата за доступ к функционалу бота.",
        payload="unique-payload",  # уникальный идентификатор
        provider_token=PAYMENT_PROVIDER_TOKEN,
        currency="RUB",
        prices=[LabeledPrice("Доступ", PRICE)],
        start_parameter="start",
        need_email=True,
    )


async def precheckout_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
    query = update.pre_checkout_query
    # Можно добавить дополнительные проверки
    await query.answer(ok=True)


async def successful_payment_callback(update: Update, context: ContextTypes.DEFAULT_TYPE):
    # Обработка успешной оплаты
    payment = update.message.successful_payment
    user_id = update.effective_user.id
    # Здесь можно сохранить информацию о платеже в базе данных
    await update.message.reply_text(
        "Спасибо за оплату! Теперь вы можете использовать бота.",
        reply_markup=ReplyKeyboardRemove(),
    )
    # Пример отправки доступа
    await update.message.reply_text("Ваш доступ активирован. Как я могу помочь?")


async def restricted_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    # Проверка, оплатил ли пользователь
    user_id = update.effective_user.id
    # Здесь должна быть логика проверки из базы данных
    has_paid = False  # Замените на реальную проверку
    if has_paid:
        await update.message.reply_text("Вот ваш доступный контент.")
    else:
        await update.message.reply_text(
            "Для доступа, пожалуйста, оплатите.",
            reply_markup=ReplyKeyboardMarkup([["Оплатить"]], one_time_keyboard=True),
        )


def main():
    application = ApplicationBuilder().token(BOT_TOKEN).build()


    application.add_handler(CommandHandler("start", start))
    application.add_handler(MessageHandler(filters.Regex("^(Оплатить)$"), payment))
    application.add_handler(PreCheckoutQueryHandler(precheckout_callback))
    application.add_handler(MessageHandler(filters.SUCCESSFUL_PAYMENT, successful_payment_callback))
    application.add_handler(CommandHandler("protected", restricted_command))


    print("Бот запущен...")
    application.run_polling()


if __name__ == '__main__':
    main()
```
Где взять YOUR_PAYMENT_PROVIDER_TOKEN