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

Discord.py中invites_from未返回预期列表的问题求助

解决Discord.py邀请链接统计的生成器与遍历错误问题

嘿,我来帮你搞定这个问题!你遇到的两个问题其实都是discord.py异步API和对象使用的常见坑,我一步步给你拆解:

问题出在哪?

  1. 直接输出生成器:invites_from()返回的是异步生成器对象,不是现成的列表,直接发给频道当然会显示那个奇怪的<generator object...>字符串
  2. 传错参数类型:你把服务器ID字符串传给了invites_from(),但这个方法需要的是Guild(旧版叫Server)对象,不是ID,所以才会报AttributeError: 'str' object has no attribute 'id'
  3. 冗余实例混淆:你同时初始化了discord.Client()和commands.Bot(),其实Bot是Client的子类,完全用Bot就能搞定所有操作,没必要搞两个实例给自己添乱

修正后的完整代码(兼容旧版discord.py)

import discord
from discord.ext import commands

# 只保留Bot实例,去掉多余的Client
client = commands.Bot(command_prefix="!")

@client.event
async def on_ready():
    print("Bot Connected!")

@client.command()
async def inv(ctx):
    # 兼容新旧版本的服务器对象获取
    guild = ctx.guild if hasattr(ctx, 'guild') else ctx.server
    invites_list = []
    total_uses = 0

    # 必须用async for遍历异步生成器
    async for invite in client.invites_from(guild):
        # 收集每个邀请的链接和使用次数
        invites_list.append(f"🔗 {invite.url} | 使用次数:{invite.uses}")
        total_uses += invite.uses
    
    # 构建友好的回复消息
    if invites_list:
        reply = f"📋 当前服务器邀请链接统计:\n{'\n'.join(invites_list)}\n\n🔢 所有邀请总使用次数:{total_uses}"
    else:
        reply = "⚠️ 服务器目前没有任何有效的邀请链接哦"
    
    await ctx.send(reply)

client.run("你的Bot Token")

关键修改说明

  • 移除冗余实例:只用commands.Bot就能处理所有事件和命令,避免实例冲突
  • 使用命令装饰器:用@client.command()替代on_message的手动判断,更简洁规范,还能自动处理上下文
  • 传递正确对象:用ctx.guild(或旧版ctx.server)直接拿到服务器对象,而不是提取ID字符串
  • 异步遍历生成器:discord.py的很多API都是异步的,必须用async for来遍历invites_from()返回的生成器
  • 统计总使用次数:遍历过程中累加每个邀请的uses属性,最后统一输出总数
  • 友好提示:没有邀请链接时也给用户明确的反馈信息

新版discord.py(v1.0+)兼容写法

如果你用的是新版discord.py,invites_from()已经被废弃,推荐用guild.invites()直接获取邀请列表:

# 替换原代码中的遍历部分
invites = await guild.invites()
for invite in invites:
    invites_list.append(f"🔗 {invite.url} | 使用次数:{invite.uses}")
    total_uses += invite.uses

额外提醒

确保你的Bot账号拥有**管理服务器(Manage Server)**权限,否则无法获取服务器的邀请链接哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:39:32