面向 discord.js、discord.py 和 JDA 开发者
你的 Discord 机器人高级版,每个密钥一个服务器。
按服务器开通高级版。订阅结束,高级版随之结束。
- discord.js
- discord.py
JDA
- Discord
- Stripe
- Gumroad
- Lemon Squeezy
- Ko-fi
- BuiltByBit
你将获得
为你的销售方式而打造。
按服务器开通高级版
服务器 ID 被当作设备。
host: guildId订阅按时结束
Stripe、Gumroad 和 Lemon Squeezy 会暂停已结束的订阅。
密钥共享警报
带“暂停”按钮的红色警报。
高级版角色
买家用购买邮箱认领。
自行迁移高级版
买家可以自行释放服务器名额,无需工单。
自托管,每个买家一份
模板在启动时以及每 6 小时验证一次。
工作原理
一个下午上线高级版。
- 1免费创建账号
- 2连接 Stripe 或 Gumroad
- 3添加 /premium 命令
premium.js
import { MessageFlags } from "discord.js";
import { SunLicense } from "sunlicense";
const sl = new SunLicense({ baseUrl: "https://api.sunlicense.com",
token: process.env.SUNLICENSE_API_KEY });
// /premium activate key:AX8P-XXXX-XXXX-XXXX
export async function activate(interaction) {
const key = interaction.options.getString("key", true);
// the guild is the "machine": a 1-server policy stops sharing
const r = await sl.validate(key, { host: interaction.guildId });
if (r.valid) await premiumGuilds.save(interaction.guildId, key);
await interaction.reply({ flags: MessageFlags.Ephemeral, content: r.valid
? "✓ Premium active in this server"
: `This server has no premium license (${r.data?.code})` });
}常见问题
常见问题解答。
如何把高级版授予一个 Discord 服务器而不是一个用户?
验证密钥时把服务器(guild)ID 作为设备 ID 传入。这样策略的设备上限计算的就是服务器数量:单服务器档位设为 1,多服务器档位设得更多。把密钥与服务器一起保存,每隔几小时重新验证一次,以便退款或订阅结束能及时作用到你的机器人。
支持 Patreon 吗?
目前没有 Patreon 集成。Stripe Checkout、Gumroad 会员和 Lemon Squeezy 订阅会在订阅结束时自动暂停密钥,Ko-fi Shop 订单也会发放密钥。对于 Patreon 支持者,你可以在控制台或在 Discord 中用 /license issue 发放密钥,并手动吊销。
高级版的验证会消耗我的套餐额度吗?
在密钥激活时验证并缓存结果,每隔几小时重新验证一次,而不是每条命令都验证。Free 套餐每月包含 10,000 次验证,超出后验证也不会被拒绝或减速:Owner 会在用量达到 80% 和 100% 时收到邮件。
我可以销售机器人的自托管版本吗?
会。我们在 GitHub 上的 discord.js 和 JDA 模板会在机器人启动时验证买家的密钥,每 6 小时重新验证一次,无法连接 SunLicense 时退而使用签名的离线许可证文件,并在密钥被吊销时下线。每个密钥可在其策略允许的设备数量上运行。discord.py 可以用 Python SDK 完成同样的验证。
SunLicense