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

求助:解决nextcord中'NoneType'对象无'leave'属性的错误

问题分析与解决

错误原因

  1. 无效的服务器ID获取逻辑:你调用client.get_guild("server_id")时,传入的是字符串字面量"server_id"而非实际的服务器ID变量,且get_guild要求接收整数类型的ID,这直接导致server变量为None,调用leave()自然触发AttributeError。
  2. 冗余的对象获取操作:on_guild_join事件已经直接传入了guild对象,完全不需要通过client.get_guild重复获取。
  3. 文件写入模式错误:使用"w"模式会清空文件原有内容,每次加入服务器都会覆盖之前的ID记录,应该用"a"模式实现追加写入。

修正后的代码

@client.event
async def on_guild_join(guild):
    # 追加写入服务器ID,避免覆盖原有记录
    with open('Servers.txt', "a", encoding="utf-8") as f:
        f.write(f"{guild.id}\n")  # 用换行分隔每个ID,方便后续读取
    # 直接使用事件传入的guild对象执行离开操作
    await guild.leave()

关键说明

  • 直接使用on_guild_join参数中的guild对象,它包含了当前加入服务器的完整信息,调用guild.leave()即可直接离开该服务器。
  • 改用"a"模式写入文件,确保每加入一个服务器,ID都会追加到文件末尾,保留所有历史记录。
  • 用f-string格式化字符串,代码更简洁易读。

内容的提问来源于stack exchange,提问作者Honza Kudláček

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:24:58