Tutorial

Stripeを使用してDiscordペイウォールボットを作成する方法

Josselin Liebe profile Josselin Liebe
公開日 2025年3月19日 更新日 2025年8月12日

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" }
]

機能

私たちの無料ボットは、ユーザー登録からサブスクリプション管理まで、すべてを処理する堅牢なサブスクリプションシステムを実装しています。

  • サブスクリプション時の即時ロール割り当て
  • 正規表現検証付きのメール検証システム
  • 定期購読と生涯サブスクリプションの両方のサポート
  • 自動サブスクリプションステータスチェック
  • 期限切れサブスクリプションの段階的なリマインダーシステム

Discordボットは毎日チェックを実行してサブスクリプションの有効性を確認し、サブスクリプションステータスに基づいてユーザーロールを自動的に管理します。

ユーザーフレンドリーなコマンド

ユーザーがサブスクリプションを簡単に管理できるように、直感的なコマンドシステムを設計しました。ボットはスラッシュコマンドと従来のメッセージコマンドの両方をサポートしています。

// subscribeコマンドの実装例
export const commands = [
    {
        name: "subscribe",
        description: "サブスクライブするか、アクティブなサブスクリプションを請求してください!",
        options: [
            {
                name: "email",
                description: "あなたのメールアドレス",
                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画像女性