发布于 2026-01-06 3 阅读
0

以下是我如何为 GitHub Readme 创建实时 Discord 徽章的方法 🌠 🎯 Discord 实时成员计数徽章

以下是我如何为 GitHub 自述文件创建实时 Discord 徽章的方法🌠

🎯 Discord 直播成员计数徽章

大家好,我又带着新项目回来了。这次,我制作了一个实时显示的Discord徽章,可以显示成员总数。

徽章

在这篇博客中,我将与大家分享:

  • 我为什么要建造这个?
  • 为什么要在 GitHub 自述文件中添加动态 Discord 徽章?
  • 逐步指南,教您如何将此徽章添加到 GitHub README 文件中,包括如何自定义它。
  • 我如何处理 Discord 实时数据,添加 Redis 缓存,管理速率限制,并使其速度更快。

那么,开始吧。3… 2… 1… 🌱

 

我为什么要建造这个?

我想就此讲个很短的故事。我所在的公司想让我在他们的 GitHub README 文件中添加一个动态的 Discord 徽章,用来显示成员总数。

我尝试在网上搜索。经过一番搜索,我发现 Discord 已经提供了一个“服务器小部件 JSON API”。为此,你需要进入 Discord 服务器设置 > 互动,然后启用该小部件,就能找到 API 链接和服务器 ID 了。

服务器小部件

您可以使用此服务器 ID 创建徽章,如下所示:

[![demo](https://img.shields.io/discord/YOUR_SERVER_ID?logo=discord)](https://discord.gg/INVITE_CODE)
Enter fullscreen mode Exit fullscreen mode

但问题是,它只会显示在线会员人数,而不是所有会员人数

在线计数徽章

我尝试搜索了很多关于“如何显示所有成员数量”的信息,但没有找到任何结果。

于是,我决定自己做一个。这非常简单。当我为公司制作的时候,我意识到可能还有其他人也想要这个徽章,所以我就把它公开出来,供大家使用。

我不知道市面上是否已经有类似的徽章。我找了很多,但都很失望,所以决定自己做一个。如果您知道任何类似的徽章,或者知道任何可以实时更新的动态 Discord 徽章显示方法,请在评论区告诉我。

 

为什么要修改Discord Live Members Count BadgeGitHub Readme 文件?

许多开源项目和社区希望在 GitHub README 文件中展示其 Discord 服务器的发展情况,原因如下:

  • 社区规模越大,建立的信任度就越高。因此,展示您的 Discord 成员总数不仅可以推广您的产品,还能增强潜在用户的信任。

  • 实时指标使你的 README 文件更具动态性,给人一种项目活跃且维护良好的感觉。

  • 吸引贡献者和合作者。不断壮大的社区表明用户参与度高,这可以吸引更多开发者。

  • 帮助社区管理员追踪增长情况。徽章可以让用户无需登录 Discord 即可快速查看服务器统计数据。

  • 鼓励更多用户加入。看到带有大量数字的徽章会引发“害怕错过”(FOMO)心理,从而提高 Discord 的加入率。

  • 提升项目可信度。就像星标和点赞数一样,社区规模也成为了一种社会认同指标。

  • 便于比较类似项目。潜在用户可以通过直观的数据快速评估社区支持度。

最重要的一点是,“偷窥你的对手、敌人,甚至是朋友的 Discord 社群成员”。我不知道你们怎么样,反正我会这么做。你只需要他们的服务器 ID。继续阅读这篇博客,我会告诉你具体操作方法。(我并不提倡这种行为。这很不好。不过,我不在乎。😂)

 

分步指南:如何Discord Live Members Count Badge在 GitHub README 文件中添加内容

让我们在 5 分钟内帮你设置好 Discord 徽章!

步骤 1:将其添加Live Count Bot到您的服务器

首先,你需要邀请我的机器人加入你的Discord服务器:

🤖 点击这里添加机器人

该机器人仅需极少的权限:

  • 查看频道(以访问您的服务器)
  • 管理频道(用于成员计数)

步骤 2:启用服务器小部件

这至关重要——如果没有这一步,你的徽章将无法正常工作!

  1. 右键单击服务器名称 →服务器设置
  2. 导航至“互动”“服务器小部件”
  3. 启用“启用服务器小部件”选项
  4. 复制您的服务器 ID(您之后会用到它!)

仍然遇到困难?请参阅此处的文档。

如果你不是 Discord 服务器的核心成员怎么办?上述选项仅对服务器所有者、管理员和版主(有时)可见。但如果你既不是他们也不是,却仍然想要添加此徽章呢?还记得我之前提到的“抢先预览”功能吗?我们会在这里应用它。

如果您不是核心会员,但仍想添加此徽章或想抢先预览,请按照以下步骤操作:

  1. 打开用户设置
  2. 导航至高级
  3. 启用“开发者模式”选项
  4. 现在,右键单击任意服务器,即可看到“复制服务器 ID”选项。

注意: 该服务器必须有在线成员计数。

步骤 3. 自定义您的徽章

让我们尽量快速简便地完成这件事。

复制此模板,在相应位置添加您的服务器 ID 和邀请链接(可选,但很重要),然后将其粘贴到您的 GitHub Readme 中。

[![discord members](https://discord-live-members-count-badge.vercel.app/api/discord-members?guildId=YOUR_SERVER_ID_HERE)](https://discord.gg/YOUR_NEVER_EXPIRY_INVITE_CODE_HERE)
Enter fullscreen mode Exit fullscreen mode

它会显示 Discord 成员总数(包括机器人)。

我创建了多个端点,请点击此处查看:
端点

您可以通过此链接查看端点:

  1. Discord成员
  https://discord-live-members-count-badge.vercel.app/api/discord-members?guildId=YOUR_SERVER_ID_HERE
Enter fullscreen mode Exit fullscreen mode

2. Discord 机器人

  https://discord-live-members-count-badge.vercel.app/api/discord-bots?guildId=YOUR_SERVER_ID_HERE
Enter fullscreen mode Exit fullscreen mode

3. Discord 总计

  https://discord-live-members-count-badge.vercel.app/api/discord-total?guildId=YOUR_SERVER_ID_HERE
Enter fullscreen mode Exit fullscreen mode

但是,您想进行更多自定义吗?
没问题,我添加了三个额外的参数,让您可以更灵活地进行自定义。

  • 颜色(可选)- 十六进制颜色值#(默认值:7289DA)
  • 标签(可选)- 自定义文本标签(默认值:因端点而异)
  • 缩放比例(可选)- 尺寸倍数,范围从 0.5 到 10.0(默认值:1)

您可以将它们用作:
徽章代码:

[![discord members](https://discord-live-members-count-badge.vercel.app/api/discord-members?guildId=YOUR_SERVER_ID&color=27ae60&label=Users&scale=2)](https://discord.gg/your-invite)
Enter fullscreen mode Exit fullscreen mode

终点:

https://discord-live-members-count-badge.vercel.app/api/discord-members?guildId=YOUR_SERVER_ID&color=27ae60&label=Users&scale=2
Enter fullscreen mode Exit fullscreen mode

输出:
风俗

其他端点也一样。顺便说一句,粉色是我最喜欢的颜色。我也不知道自己为什么会做一个绿色的徽章。也许是魔鬼让我这么做的吧。

你可能会感到沮丧,因为你需要多次更改颜色和缩放比例才能获得最佳效果。每次都需要等待页面重新加载或按下快捷键enter

为了再次成为你的英雄,我还搭建了这个网站。

Discord徽章

在你的 GitHub README 文件中添加美观的、实时显示的 Discord 成员数量徽章。

网站图标discord-live-members-count-badge.vercel.app

界面简洁明了。但有两点需要注意:

1.徽章生成器

很简单,添加您的服务器 ID 和邀请链接。点击“生成”,您的徽章就会生成。直接复制粘贴到 readme 文件中即可。

发电机

2. 互动游乐场

不想手动自定义徽章?我搭建了一个交互式平台,你可以在这里:

  • 🎨 从预设颜色中选择或使用自定义十六进制代码
  • 📝 编辑标签并实时预览
  • 📏使用可视化滑块调整缩放比例
  • 📋 复制可直接使用的Markdown 代码

🚀 试试游乐场

游乐场截图

 

我是如何建造它的?

在本节中,我将尝试解释我是如何构建这个Web应用程序的。

第一步:创建 Discord 机器人

  1. 前往Discord 开发者门户
  2. 创建新应用程序
  3. 前往机器人部分
  4. 创建一个机器人并复制令牌
  5. 请使用以下权限邀请机器人加入您的服务器:
    • 查看频道
    • 管理频道

在特权网关意图中,Presence Intent必须Server Members Intent启用。

机器人权限:
在这种情况下,机器人只需要最少的权限:

  • 查看频道(1024)
  • 管理频道(16)

总权限整数:1040

步骤 2. 路由和 API

discord-membersAPI

它使用 Discord 的端点获取大致的成员数量/guilds/{guildId}?with_counts=true

const r = await axios.get(`https://discord.com/api/v10/guilds/${guildId}?with_counts=true`, {
  headers: { Authorization: `Bot ${process.env.DISCORD_BOT_TOKEN}` },
});
Enter fullscreen mode Exit fullscreen mode

*由于 API 调用具有近似性和快速性,因此该路由中未实现缓存。

discord-botsAPI

它会统计公会中使用该fetchAllMembers()工具的机器人数量。

const members = await fetchAllMembers(guildId);
const botCount = members.filter((m) => m.user.bot).length;
Enter fullscreen mode Exit fullscreen mode

要点:

  • 调用 Discord 的/guilds/{guildId}/members端点(分页)。
  • 需要成员意图(必须启用特权意图)。
  • 使用以下方式过滤机器人用户m.user.bot
  • 使用缓存来减少重复的繁重调用。(在 utils 类中)

discord-totalAPI

它结合了机器人用户和人类用户的数量。

const members = await fetchAllMembers(guildId);
const botCount = members.filter((m) => m.user.bot).length;
const humanCount = members.length - botCount;
Enter fullscreen mode Exit fullscreen mode

要点:

  • 逻辑和获取方式与……相同discord-bots
  • 显示类似这样的综合信息22 users, 5 bots

fetchAllMembers公用事业

使用 Discord 的 API 分页浏览公会的所有成员。

while (keepFetching) {
  const res = await axios.get(`https://discord.com/api/v10/guilds/${guildId}/members`, {
    headers: { Authorization: `Bot ${DISCORD_BOT_TOKEN}` },
    params: { limit: 1000, after },
  });
  ...
}
Enter fullscreen mode Exit fullscreen mode

缓存:

  • 首先尝试使用密钥访问 Redis guild:{guildId}:members
  if (redis) {
    try {
      const cached = await redis.get(cacheKey);
      if (cached) {
        console.log(`[Cache] HIT for ${guildId}`);
        return JSON.parse(cached);
      } else {
        console.log(`[Cache] MISS for ${guildId}`);
      }
    } catch (err) {
      console.warn(`[Cache] Redis error on GET: ${err.message}`);
    }
  }
Enter fullscreen mode Exit fullscreen mode
  • 如果缓存未命中,则从 Discord 获取并缓存结果。
  • TTL 由环境变量控制CACHE_TTL(默认值为 300 秒)。

速率限制处理:

  • 如果 API 返回 429,则等待retry_after几秒钟,然后重试。
  • 在请求之间添加参数setTimeout以避免达到限制。
if (err.response?.status === 429) {
  const retryAfter = err.response.data?.retry_after || 1;
  await new Promise((r) => setTimeout(r, retryAfter * 1000));
  continue;
}
Enter fullscreen mode Exit fullscreen mode

徽章生成

所有路由都使用以下badge-maker软件包:

let svg = makeBadge({
  label,
  message,
  color,
  style: 'flat',
  logoBase64: `data:image/svg+xml;base64,${discordLogoBase64}`,
});
Enter fullscreen mode Exit fullscreen mode

缩放:可选scale参数,用于调整徽章大小。

if (scale !== 1) {
  svg = svg
    .replace(/<svg([^>]+?)width="(\d+)" height="(\d+)"/, ...)
    .replace(/<svg[^>]*>/, `$1<g transform="scale(${scale})">`)
    .replace(/<\/svg>/, '</g></svg>');
}
Enter fullscreen mode Exit fullscreen mode

错误处理:如果任何调用失败,则会返回一个红色的“错误”徽章。


快速概要

  • discord-members= 快速估算,无意图。
  • discord-bots& discord-total= 精确,使用成员列表和缓存。
  • fetchAllMembers处理分页、速率限制和缓存。

该配置支持扩展、CDN 缓存和符合 Discord 速率限制。

步骤 3. 创建用户界面并部署。

您可以使用任何 AI 工具来创建用户界面。我使用的是 Vercel 的 V0。此外,我也使用 Vercel 来部署我的应用程序。

观看实际演示

 

请查看GitHub仓库获取源代码(喜欢这个项目吗?给它点个星吧🌠)

GitHub 标志 RS-labhub / Discord-Live-Members-Count-Badge

在你的 GitHub README 文件中添加美观的、实时显示的 Discord 成员数量徽章。

横幅

🎯 Discord 直播成员计数徽章

在你的 GitHub README 文件中添加美观的、实时显示的 Discord 成员数量徽章。

许可证:MIT 实时网站 文件夹

✨ 特点

  • 🔄 实时更新- 实时会员人数统计,采用智能缓存技术(5分钟间隔)
  • 👥 多种徽章类型- 总成员数、真人用户数或机器人用户数
  • 🛡️ 安全可靠- 使用 Discord APIwith_counts=true进行公开访问
  • ⚡ 支持无服务器架构- 可部署到 Vercel、Railway、Render 或任何平台
  • 🎨 完全可定制- 自定义颜色、标签和缩放选项
  • 📱 移动响应式- 针对所有设备优化的 Playground 界面
  • 📦 零配置- 只需添加您的机器人即可开始使用

🎬 项目展示

预览 描述
YouTube演示 🎬 YouTube演示
点击图片观看完整演示。
博客文章 📝博客文章
阅读博客文章以获取更详细的解释。

🚀 快速入门

1. 将机器人添加到您的服务器

首先,请邀请我们的机器人加入您的 Discord 服务器:

🤖 将机器人添加到服务器

2. 启用服务器小部件

  1. 前往…

 

等等,等等,等等!你刚才是不是要看视频讲解?我已经准备好了。点击这里观看:

 

[ ] 晋升:

网站和自述文件中的默认徽章均已获得 LLMWare 的许可,使用了他们的 Discord 服务器。如果您还不知道,LLMWare 最近发布了“ Model HQ:您的私人 AI 伴侣”。有趣的是,它可以在本地运行,无需联网。

想了解更多?请点击此处阅读。

 

结论

简而言之,请尝试一下并告诉我您的反馈。我通常不会这么说,但请保存这篇博客以备将来参考,并给 GitHub 代码库点个星标。

所有链接都在这里:

如果您希望我为您的 GitHub 仓库提交一个 PR 来添加此徽章,请在评论区告诉我。

另外,如果您想了解更多关于我的信息,这是我的作品集(对了,试试看能不能找到那个秘密页面,它还在等着你呢)。

感谢你读到这里!你太棒了!给你一个大大的拥抱🫂。继续进步吧!你是最棒的!🫀

文章来源:https://dev.to/rohan_sharma/heres-how-i-created-a-real-time-discord-badge-for-github-readme-4adg