Tutorial

Как создать Discord-бота с пейволом и Stripe

Josselin Liebe profile Josselin Liebe
Опубликовано 19 мар. 2025 г. Обновлено 12 авг. 2025 г.

Discord-серверы стали большим, чем просто платформами для общения — это процветающие сообщества, которые часто предоставляют ценный контент и услуги. Поскольку владельцы серверов стремятся монетизировать свои сообщества, внедрение надежной системы пейволов становится критически важным. Именно здесь на помощь приходит наш Stripe Discord-бот. Он бесплатный и с открытым исходным кодом.

В отличие от традиционных решений, таких как Donatebot.io, наш бот связывается напрямую со Stripe, устраняя комиссии посредников и обеспечивая более плавный опыт как для владельцев серверов, так и для пользователей.

Стек технологий

[
    { "name": "Node.js", "version": "v16+" },
    { "name": "PostgreSQL", "version": "v13+" },
    { "name": "Discord.js", "version": "latest" },
    { "name": "Stripe API", "version": "latest" },
    { "name": "TypeORM", "version": "latest" },
    { "name": "Sentry", "version": "latest" }
]

Возможности

Наш бесплатный бот реализует надежную систему подписки, которая обрабатывает все, от регистрации пользователей до управления подписками:

  • Мгновенное назначение роли при подписке
  • Система верификации email с проверкой regex
  • Поддержка как периодических, так и пожизненных подписок
  • Автоматические проверки статуса подписки
  • Прогрессивная система напоминаний об истекающих подписках

Discord-бот выполняет ежедневные проверки для обеспечения действительности подписки и автоматически управляет ролями пользователей на основе их статуса подписки.

Удобные команды

Мы разработали интуитивно понятную систему команд, которая позволяет пользователям легко управлять своими подписками. Бот поддерживает как слэш-команды, так и традиционные текстовые команды:

// Пример реализации команды subscribe
export const commands = [
    {
        name: "subscribe",
        description: "Подпишитесь или получите вашу активную подписку!",
        options: [
            {
                name: "email",
                description: "Ваш email адрес",
                type: ApplicationCommandOptionType.String,
                required: false
            }
        ]
    }
];

Система команд включает:

  • /subscribe — Связать ваш аккаунт Discord с подпиской Stripe
  • /status — Проверить статус вашей подписки
  • /cancel — Отменить подписку
  • /admin-access — Управление доступом администратора (только для админов)

Все команды ограничены каналами для поддержания порядка на сервере. Например, команды подписки можно использовать только в специально отведенных каналах.

Система верификации

Бот включает сложную систему верификации, которая запускает ежедневные проверки:

export const crons = [
   '0 0 1 * * *'
];

const getExpiredEmbed = (daysLeft: 0 | 1 | 2): EmbedBuilder => {
    const title = daysLeft > 0 ? 'Срок действия вашей подписки истекает' : 'Ваша подписка истекла';
    const embed = new EmbedBuilder()
        .setTitle(title)
        .setURL(process.env.STRIPE_PAYMENT_LINK)
        .setColor(process.env.EMBED_COLOR)
        .setDescription(`Пожалуйста, посетите ${process.env.STRIPE_PAYMENT_LINK}, чтобы сохранить ваш эксклюзивный доступ! ${daysLeft > 0 ? `Ваша подписка истекает через ${daysLeft * 24} часа.` : ''}`);
    return embed;
}

Особенности:

  • Ежедневная проверка статуса подписки
  • Прогрессивная система напоминаний (за 3 дня, 2 дня, 1 день до истечения)
  • Автоматическое управление ролями
  • Детальное логирование для админов
  • Поддержка пожизненных подписок

Интеграция со Stripe

Наша прямая интеграция со Stripe обеспечивает надежную обработку платежей:

export const findSubscriptionsFromCustomerId = async (customerId: string) => {
    const subscriptions = await queue.add(async () =>
        await fetch(`https://api.stripe.com/v1/subscriptions?customer=${customerId}`, {
            headers: {
                Authorization: `Bearer ${process.env.STRIPE_API_KEY}`
            }
        }).json()
    );
    return subscriptions.data || [];
}

export const findActiveSubscriptions = (subscriptions: any[]) => {
    return subscriptions.filter(sub =>
        sub.status === 'active' ||
        sub.status === 'trialing' ||
        (sub.cancel_at && sub.current_period_end > Date.now() / 1000)
    );
}

Установка

Настройка бота проста:

  1. Установите Node.js и PostgreSQL
  2. Создайте и настройте вашу базу данных
  3. Установите зависимости
  4. Соберите проект
  5. Настройте переменные окружения
  6. Разверните с помощью PM2 или вашего любимого менеджера процессов

Заключение

Наш Stripe Discord-бот предоставляет мощное, безопасное и эффективное решение для внедрения пейволов на Discord-серверах. Его прямая интеграция со Stripe, автоматизированная система верификации и комплексный контроль администратора делают его идеальным выбором для владельцев серверов, желающих монетизировать свои сообщества.

Вы можете получить исходный код по этой ссылке.

Готовы превратить страсть в прибыль?

Присоединяйтесь к тысячам авторов, уже зарабатывающих с Sublyna.
Начать бесплатно Кредитная карта не требуется. Простая настройка.
Изображение CTA женщины