如何通过邀请链接获取Discord服务器名称(Discord.js v14)
解决Discord.js v14中提取邀请链接并获取服务器名称的问题
要实现从消息中提取纯Discord邀请链接,再获取对应服务器名称,你可以通过正则表达式匹配链接格式来完成,具体步骤和代码如下:
核心思路
Discord邀请链接主要有两种格式:discord.gg/xxx 和 discord.com/invite/xxx,通过正则表达式可以精准匹配这类链接,然后从消息内容中提取出来,再传入fetchInvite方法。
完整代码示例
// 匹配Discord邀请链接的正则表达式,兼容带/不带http(s)、www的情况 const inviteRegex = /(https?:\/\/)?(www\.)?(discord\.gg\/|discord\.com\/invite\/)[a-zA-Z0-9]+/gi; // 从消息内容中提取第一个匹配到的邀请链接 const inviteLink = message.content.match(inviteRegex)?.[0]; if (inviteLink) { try { const invite = await message.client.fetchInvite(inviteLink); // 获取服务器名称(注意:部分临时邀请或已删除的服务器可能无guild信息) const guildName = invite.guild?.name; if (guildName) { await message.reply(`对应的服务器名称:${guildName}`); } else { await message.reply("该邀请无法获取到服务器名称(可能是临时邀请或服务器已删除)"); } } catch (error) { await message.reply("无效的邀请链接,或机器人无权限获取该邀请信息"); console.error("获取邀请信息出错:", error); } } else { await message.reply("消息中未包含有效的Discord邀请链接"); }
代码说明
- 正则表达式:覆盖了所有常见的Discord邀请链接格式,确保能匹配到消息中混杂的链接
- 链接提取:使用
match方法获取匹配结果,?.[0]安全获取第一个匹配的链接(避免无匹配时报错) - 错误处理:用
try-catch捕获无效链接、权限不足等异常情况,提升代码稳定性 - 空值判断:
invite.guild可能为null,需要判断后再获取名称,避免运行时错误
内容的提问来源于stack exchange,提问作者Kitki30
相关产品推荐
相关产品推荐

