# 如何将 Discord 机器人商业化

> 向 Discord 机器人功能收费的完整指南。了解如何使用 Dodo Payments 添加高级套餐、许可证密钥激活和订阅计费。
- **Author**: Ayush Agarwal
- **Published**: 2026-03-24
- **Category**: Payments, How-To, License Keys
- **URL**: https://dodopayments.com/blogs/zh/monetize-discord-bot

---

你打造了一个真正有人使用的 Discord 机器人。它可能最初只是一个周末项目，用来自动完成一些服务器任务，但现在已经进驻数千个服务器，用户群也在不断增长。你在托管、API 成本和自己的时间上投入越来越多，但这个机器人却一分钱都没赚到。是时候把这个副业项目转变为可持续的业务了。

为 Discord 机器人实现商业化是一项独特的挑战。与传统 SaaS 不同，传统 SaaS 的整个 Web 界面都由你掌控，而你的"应用"运行在第三方聊天平台中。虽然 Discord 已经推出了原生商业化功能，但对于希望打造跨平台品牌的开发者来说，这些功能通常伴随着较高的平台费用和有限的灵活性。

在本指南中，我们将介绍如何为 Discord 机器人构建自己的支付流程。我们将重点讲解许可证密钥模式：它是在保持对收入和客户数据完全控制的同时，限制高级功能访问的最有效方式。

## Discord 原生商业化的问题

Discord 内置的高级功能很方便，但对认真的开发者来说，它们并不总是最佳选择。使用原生商业化功能后，你就被锁定在 Discord 的生态系统中。每笔销售你都要向平台支付相当高的比例，而且对底层交易数据的访问也非常有限。

> 许可证密钥管理看似简单，但当你需要在数千名客户之间处理激活次数限制、设备追踪和到期逻辑时，事情就不一样了。自己构建这些功能会让你偏离核心产品。
>
> \- Ayush Agarwal，Dodo Payments 联合创始人兼 CPTO

更重要的是，Discord 机器人无法直接在聊天界面内处理支付。即使使用原生工具，用户体验也常常显得割裂。如果你想提供专业的结账体验、自动处理全球税务，并在不同平台之间管理许可证，就需要一个外部支付解决方案。

通过使用 [SaaS 的名义商户服务商](https://dodopayments.com/blogs/merchant-of-record-for-saas)，你可以将全球税务合规和支付处理的复杂工作交给专业服务商。这样，你就能专注于构建功能，而支付合作伙伴则负责运营全球业务中那些"无聊"的部分。

## Discord 机器人的 3 种商业化模式

在编写任何代码之前，你需要决定如何向用户收费。对于 Discord 机器人来说，有三种主要模式效果很好。

### 1. 许可证密钥激活（一次性付费）

这是最容易实现的模式。用户支付一次性费用后，会收到一个唯一的许可证密钥。随后，他们可以使用机器人命令为自己的账户或服务器激活该密钥。这非常适合提供实用工具或特定功能"终身"访问权限的机器人。

许可证密钥模式具有很强的可移植性。你可以在自己的网站、落地页，甚至通过私信销售密钥。这是无需承担复杂订阅管理成本即可 [在线销售数字产品](https://dodopayments.com/blogs/how-to-sell-digital-products-online) 的绝佳方式。

### 2. 基于服务器的订阅（按服务器月付）

在这种模式下，服务器所有者支付月费，为服务器中的所有人解锁高级功能。这种模式常见于管理机器人、音乐机器人或社区互动工具。价值主张很明确：服务器所有者付费，为整个社区改善体验。

许多服务器所有者本身已经在向社区收费，因此你的机器人只是更大会员预算中的一项支出。如果你正在为他们提供建议，我们关于 [销售社区访问权限](https://dodopayments.com/blogs/sell-community-access) 和 [Mighty Networks 替代方案](https://dodopayments.com/blogs/mighty-networks-alternatives) 的指南，说明了 Discord 与托管平台相比适合什么场景。

这种模式需要可靠的 [订阅定价模式](https://dodopayments.com/blogs/subscription-pricing-models)，以处理周期性计费和自动取消。你需要在数据库中追踪哪些服务器 ID 拥有有效订阅。

### 3. 基于用户的订阅（按用户月付）

这是经典的 SaaS 模式。单个用户按月付费，解锁属于自己的高级功能；无论机器人进驻哪个服务器，这些功能都会跟随用户。这种模式非常适合 RPG 机器人、个人效率工具，或自定义个人资料等外观功能。

基于用户的订阅非常适合培养忠实用户群。由于高级状态与用户的 Discord ID 绑定，用户会对自己的"Pro"状态产生归属感。上线前请规划好续费和支付失败后的处理流程，因为我们的 [周期性支付指南](https://dodopayments.com/blogs/recurring-payments-guide) 涵盖了重试和催收场景，而这些问题往往会悄悄侵蚀月度收入。

## 为什么选择 Dodo Payments 为 Discord 机器人提供支付？

Dodo Payments 专为希望 [在线销售软件](https://dodopayments.com/blogs/how-to-sell-software-online) 且不想被税务合规问题困扰的开发者打造。对于 Discord 机器人开发者来说，它提供了几项关键优势。

首先，Dodo 负责整个 [软件许可证管理](https://dodopayments.com/blogs/software-license-management) 生命周期。你可以配置产品，让系统在支付成功后自动生成唯一的许可证密钥。该密钥随后会发送给用户，并可通过 Webhook 获取。

其次，Dodo 作为你的 MoR（名义商户）。这意味着我们负责处理 190 多个国家和地区的销售税、VAT 和 GST。如果一位来自德国的用户购买了你的机器人高级套餐，我们会计算、收取并向德国税务机关缴纳 VAT。你只需收款。

第三，集成对开发者非常友好。无论你使用 Discord.js、Eris，还是基于 Python 的库，都可以通过我们的 SDK 和 Webhook 轻松触发结账并监听支付事件。

## 分步实现许可证密钥模式

下面让我们逐步实现许可证密钥模式。对于 [独立开发者工具](https://dodopayments.com/blogs/indie-hacker-tools) 来说，这通常是最佳起点，因为它易于理解且能够快速部署。

### 1. 在控制台中创建产品

登录你的 Dodo Payments 控制台并创建新产品。设置价格和计费频率（本例中选择一次性付费）。在产品设置中启用"许可证密钥"。你可以指定每个密钥允许的激活次数。对于 Discord 机器人，你可以允许每个密钥激活一次，并将其绑定到特定的 Discord 用户 ID。

### 2. 构建简单的落地页或使用托管结账

开始销售并不需要复杂的网站。你可以直接使用 Dodo 的托管结账链接。当用户想要升级时，机器人可以提供一个链接，将用户带到安全且具有品牌特色的结账页面。

如果你希望体验更加一体化，也可以使用 Next.js 或其他框架构建简单的落地页。详情请参阅我们的指南：[如何向 Next.js 应用添加支付](https://dodopayments.com/blogs/add-payments-nextjs-app)。

### 3. `!premium` 命令

你的机器人应该提供一个用于启动升级流程的命令。当用户输入 `!premium` 时，机器人应通过私信向其发送高级套餐信息和结账链接。

通过私信发送链接比在公开频道中发布更好。这样可以保护交易隐私，也能避免其他用户误点原本发给某个人的链接。

### 4. 处理 Webhook

这是集成中最关键的部分。当用户完成支付后，Dodo Payments 会向你的服务器发送 `license_key.created` Webhook。该 Webhook 包含许可证密钥和客户信息。

你的后端需要监听此事件，验证签名以确保请求确实来自 Dodo，然后更新数据库。你需要将许可证密钥与用户的 Discord ID 关联起来。

### 5. 激活高级状态

机器人收到 Webhook 后，就可以自动为该用户"激活"高级状态。你可以向用户发送一条庆祝私信："感谢升级！你的高级功能现已激活。"

在数据库中，你需要保存用户的 Discord ID 及其当前高级状态。每当用户执行命令时，机器人都会先检查该状态，再决定是否执行高级功能逻辑。

## 可视化流程

通过图表可以更轻松地理解用户、你的机器人和 Dodo Payments 之间的交互。

```mermaid
flowchart TD
    A[User types !premium] --> B[Bot DMs Payment Link]
    B --> C[User Completes Payment on Dodo Checkout]
    C --> D[Dodo Generates License Key]
    D --> E[Dodo Sends Webhook to Bot Backend]
    E --> F[Bot Backend Updates Database]
    F --> G[Bot DMs User: Premium Activated]
    G --> H[User Accesses Premium Features]
```

## 代码示例

下面来看看使用 Discord.js 和 Dodo Payments SDK 的实用代码片段。

### Discord.js 命令处理器

此代码片段展示了如何处理 `!premium` 命令并发送结账链接。

```javascript
const { Client, GatewayIntentBits } = require("discord.js");
const client = new Client({
  intents: [GatewayIntentBits.Guilds, GatewayIntentBits.DirectMessages],
});

client.on("messageCreate", async (message) => {
  if (message.content === "!premium") {
    const checkoutUrl = "https://buy.dodopayments.com/pdt_your_product_id";

    try {
      await message.author.send(
        `Upgrade to Premium here: ${checkoutUrl}\nOnce you pay, your features will be activated automatically!`,
      );
      await message.reply("I've sent you a DM with the upgrade link!");
    } catch (error) {
      await message.reply(
        "I couldn't DM you. Please make sure your DMs are open!",
      );
    }
  }
});
```

### Webhook 接收器（Express.js）

你的后端需要处理来自 Dodo Payments 的传入 Webhook。

```javascript
const express = require("express");
const DodoPayments = require("dodopayments");

const app = express();
const client = new DodoPayments({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  webhookKey: process.env.DODO_PAYMENTS_WEBHOOK_KEY,
});

// Use the raw body so the signature can be verified
app.post(
  "/webhooks/dodo",
  express.raw({ type: "application/json" }),
  async (req, res) => {
    let event;

    // Always verify the signature! The SDK does it for you.
    try {
      event = client.webhooks.unwrap(req.body.toString(), {
        headers: {
          "webhook-id": req.headers["webhook-id"],
          "webhook-signature": req.headers["webhook-signature"],
          "webhook-timestamp": req.headers["webhook-timestamp"],
        },
      });
    } catch (err) {
      return res.status(401).send("Invalid signature");
    }

    if (event.type === "license_key.created") {
      const licenseKey = event.data.key;
      const customerEmail = event.data.customer_email;

      // Logic to find the Discord User ID associated with this email
      // or wait for the user to manually activate the key via bot command
      console.log(`New license created: ${licenseKey} for ${customerEmail}`);
    }

    res.status(200).send("OK");
  },
);
```

### 许可证验证检查

在运行高级命令之前，先检查数据库中的用户状态。

```javascript
async function isPremiumUser(userId) {
  const user = await db.users.findOne({ discordId: userId });
  return user && user.isPremium;
}

client.on("messageCreate", async (message) => {
  if (message.content === "!advanced-stats") {
    const premium = await isPremiumUser(message.author.id);

    if (!premium) {
      return message.reply(
        "This is a premium feature. Type !premium to upgrade!",
      );
    }

    // Execute premium logic here
    message.reply("Here are your advanced stats...");
  }
});
```

## 机器人商业化的进阶技巧

基础流程运行起来后，你还可以进一步优化用户体验。

### 服务器级许可证与用户级许可证

决定许可证应为单个用户还是整个服务器解锁功能。服务器级许可证通常价格更高，但能为社区管理者提供更大价值。你可以使用 Dodo 的 [许可证密钥 API](https://docs.dodopayments.com/api-reference/licenses/activate)，针对 `server_id` 而不是 `user_id` 追踪激活情况。

### 处理机器人重启

你的高级状态应存储在 MongoDB、PostgreSQL 或 Redis 等持久化数据库中。永远不要将高级状态存储在内存中，因为每次重启机器人进行更新时，内存中的数据都会丢失。

### 宽限期与到期

如果你使用订阅模式，请妥善处理"逾期"状态。不要立即撤销访问权限，而应给予用户 3 天宽限期来更新支付方式。Dodo 的 Webhook 会通知你支付失败和订阅取消事件。

### 提供免费试用

实现 [如何接受在线支付](https://dodopayments.com/blogs/how-to-accept-online-payments) 的一种好方法，是先展示产品价值。提供 7 天高级功能试用期。你可以在数据库中记录试用结束日期，并在试用到期后提示用户升级。

## 常见问题

### 我可以直接在 Discord 内处理支付吗？

不可以。Discord 不允许第三方机器人直接在聊天界面内收集信用卡信息。你必须将用户重定向到外部安全结账页面，例如 Dodo Payments 提供的页面。

### 如何处理全球用户的销售税？

当你使用 Dodo Payments 作为你的 MoR（名义商户）时，我们会为你处理全球税务合规。我们会根据用户所在地计算正确的税费，并将其缴纳给相应的税务机关，因此你无需担心国际税法。

### 如果用户取消订阅，会发生什么？

订阅取消后，Dodo Payments 会向你的服务器发送 Webhook 通知。随后，你可以更新数据库，在当前计费周期结束时撤销用户的高级访问权限。

### 我可以提供不同的高级套餐吗？

可以。你可以在 Dodo 控制台中创建多个产品，每个产品代表一个不同的套餐等级（例如 Silver、Gold、Platinum）。然后，你的机器人可以检查用户购买了哪个产品，以确定要解锁哪些功能。

### 开始之前，我需要注册商业实体吗？

Dodo Payments 支持个人和个体创业者开始销售。开始将机器人商业化并不一定需要注册公司，但随着收入增长，你应当了解并遵守当地法规。

## 最后总结

将 Discord 机器人商业化，是独立开发者构建持续收入来源的最佳方式之一。摆脱受限的原生工具，使用专业的 [数字产品销售最佳平台](https://dodopayments.com/blogs/best-platform-sell-digital-products)，你就能灵活地在全球范围内拓展品牌。

准备好开始为你的机器人收费了吗？现在就查看我们的 [定价](https://dodopayments.com/pricing)，并注册 [Dodo Payments](https://dodopayments.com)。如需更多技术细节，请深入了解我们的 [集成指南](https://docs.dodopayments.com/developer-resources/integration-guide)，或查看 [API 参考](https://docs.dodopayments.com/api-reference/introduction)。
---
- [More Payments articles](https://dodopayments.com/blogs/category/payments)
- [All articles](https://dodopayments.com/blogs)