You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Discord邀请链接中获取服务器名称?(disnake/discord.py)

使用disnake从Discord邀请链接提取服务器名称

完全可行,disnake(与discord.py在该功能上逻辑一致)提供了直接获取邀请信息的API,能轻松提取链接指向的服务器名称,具体实现如下:

实现步骤与代码

1. 提取邀请代码

首先需要从用户提交的邀请链接中剥离出核心的邀请代码,兼容常见的Discord邀请链接格式:

def extract_invite_code(link):
    # 匹配多种邀请链接前缀
    prefixes = ('https://discord.gg/', 'https://discord.com/invite/', 'discord.gg/', 'discord.com/invite/')
    if link.startswith(prefixes):
        return link.split('/')[-1]
    # 若用户直接传入邀请代码,直接返回
    return link

2. 获取服务器名称

通过disnake的bot.fetch_invite()方法获取邀请对象,从中提取服务器名称:

import disnake

async def get_guild_name(bot, invite_link):
    invite_code = extract_invite_code(invite_link)
    try:
        invite = await bot.fetch_invite(invite_code)
        # 私密服务器或无效邀请可能无法获取guild对象
        return invite.guild.name if invite.guild else "无法获取服务器名称(私密/无效邀请)"
    except disnake.NotFound:
        return "邀请链接已过期或不存在"
    except disnake.Forbidden:
        return "Bot无权限查看该服务器信息"

3. 调用示例(在bot的异步上下文内)

比如在一个 slash 命令中使用:

@bot.slash_command(name="get_guild", description="从邀请链接获取服务器名称")
async def get_guild_command(inter, invite_link: str):
    guild_name = await get_guild_name(bot, invite_link)
    await inter.response.send_message(f"服务器名称:{guild_name}")

注意事项

  • 必须在异步上下文(如bot的命令、事件回调)中调用上述函数,因为fetch_invite是异步方法
  • 确保你的Bot已被授予guilds权限,否则可能无法正常获取服务器信息
  • 对于已过期、无效或设置了严格隐私权限的邀请,会返回对应的提示信息,需做好异常处理

内容的提问来源于stack exchange,提问作者Kovirum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:51:20