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

Discord.py机器人.servers命令返回函数对象而非邀请链接故障处理

问题修复方案

错误原因

你的代码存在多处逻辑错误,最终输出函数内存地址的核心原因是你在f-string中直接引用了serversInvite函数对象本身,没有调用函数获取返回值,其他关联错误如下:

  • 内部函数serversInvite逻辑冗余且错误:参数默认值写为discord.Guild类而非实例,内部循环遍历所有服务器生成邀请时会反复覆盖link变量,也没有返回生成的邀请链接
  • 你全程没有调用过serversInvite函数,生成邀请和拼接消息的逻辑完全割裂
  • 没有做权限校验,机器人在无创建邀请权限的服务器会直接报错
  • 未判断服务器是否存在可用的文字频道,空频道列表会触发索引报错

修正后可用代码

@commands.command()
async def servers(self, ctx):
    msg = '```js\n'
    for guild in self.bot.guilds:
        invite_link = "无权限生成邀请"
        # 先判断是否存在可用文字频道
        if guild.text_channels:
            channel = guild.text_channels[0]
            try:
                # 生成永久有效、无使用次数限制的邀请
                link = await channel.create_invite(max_age=0, max_uses=0)
                invite_link = str(link)
            except discord.Forbidden:
                invite_link = "无创建邀请权限"
        # 拼接单条服务器信息
        msg += f'ID: {guild.id} | Members: {guild.member_count} | Guild Name: {guild.name} | Owner: {guild.owner} | Server Invite: {invite_link}\n'
    msg += '```'
    await ctx.send(msg)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:54:03