教程
如何使用 Stripe 打造 Discord 付费墙机器人
发表于 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' }
]
功能亮点
这款免费机器人实现了稳健的订阅系统,从注册到管理一应俱全:
- 订阅成功立即分配角色
- 带正则校验的邮箱验证
- 支持循环订阅与终生订阅
- 自动化订阅状态检查
- 针对即将到期的渐进式提醒
机器人会每日检查订阅状态,并根据结果自动管理用户角色。
友好的命令体系
我们设计了直观的命令系统,兼容 Slash 命令与传统消息命令,方便成员自行管理订阅:
// subscribe 命令示例
export const commands = [
{
name: "subscribe",
description: "Subscribe or claim your active subscription!",
options: [
{
name: "email",
description: "Your email address",
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 ? 'Your subscription is about to expire' : 'Your subscription is expired';
const embed = new EmbedBuilder()
.setTitle(title)
.setURL(process.env.STRIPE_PAYMENT_LINK)
.setColor(process.env.EMBED_COLOR)
.setDescription(`Please visit ${process.env.STRIPE_PAYMENT_LINK} to keep your exclusive access! ${daysLeft > 0 ? `Your subscription expires within ${daysLeft * 24} hours.` : ''}`);
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)
);
}
安装步骤
部署机器人非常简单:
- 安装 Node.js 与 PostgreSQL
- 创建并配置数据库
- 安装依赖项
- 构建项目
- 配置环境变量
- 使用 PM2 或其他进程管理器部署
总结
我们的 Stripe Discord 机器人为服务器提供了强大、安全、高效的付费墙解决方案。借助 Stripe 的直接集成、自动化验证系统和全面的管理控制,它是希望实现社区变现的服务器管理员的理想工具。
源代码可在此获取:GitHub 仓库。