Python Disord.py-如何列出bot所在的所有服务器?

Python Disord.py-如何列出bot所在的所有服务器?,python,list,directory,discord,discord.py,Python,List,Directory,Discord,Discord.py,我正试图使我的机器人上线时,它将检查机器人所在的每台服务器,并在目录中为它们创建一个文件夹,但我一直得到错误列表2未定义,即使iv已定义,代码如下: import discord from discord.ext import commands import os PREFIX = "$" bot = commands.Bot(command_prefix=PREFIX, description="Hi") list1 = os.listdir('C:

我正试图使我的机器人上线时,它将检查机器人所在的每台服务器,并在目录中为它们创建一个文件夹,但我一直得到错误列表2未定义,即使iv已定义,代码如下:

import discord
from discord.ext import commands
import os

PREFIX = "$"
bot = commands.Bot(command_prefix=PREFIX, description="Hi")

list1 = os.listdir('C:/Users/User/Desktop/BOT_FOLDER')
for guild in bot.guilds:
    print(guild.name)
    list2 = guild.name


print(os.listdir('C:/Users/User/Desktop/BOT_FOLDER'))

set1 = set(list1)
set2 = set(list2)

missing = list(sorted(set1 - set2))
added = list(sorted(set2 - set1))

print('missing:', missing)
print('added:', added)

newpath = r'C:\Users\User\Desktop\BOT_FOLDER\{}'.format(added)
if not os.path.exists(newpath):
    os.makedirs(newpath)

if os.path.exists("demofile.txt"):
  os.remove('C:/Users/User/Desktop/BOT_FOLDER/{}').format(missing)
else:
  print("The file does not exist")

bot.run('BOT_TOKEN_HERE')

其实翻译是对的!即使看起来不是这样,当您运行
set2=set(list2)
时,也不会定义
list2


为什么会这样 您正在bot.guilds中为帮会基本调用
,在您的
bot
对象初始化之后。但是,它还没有连接到API,这意味着它没有加载类似于
bot.guilds
的东西。此属性将为
None
,因此循环不会运行,并且
list2
不会被定义


如何解决这个问题 等待您的机器人成功连接到API,然后迭代您的公会。这可以通过使用
on_ready()
事件来完成。另外,您需要将项目
.append()
添加到列表中,不能只分配等号的新项目

@bot.event
async def on_ready():
    list1 = os.listdir('C:/Users/User/Desktop/BOT_FOLDER')
    list2 = []
    for guild in bot.guilds:
        print(guild.name)
        list2.append(guild.name)


    print(os.listdir('C:/Users/User/Desktop/BOT_FOLDER'))

    set1 = set(list1)
    set2 = set(list2)

    missing = list(sorted(set1 - set2))
    added = list(sorted(set2 - set1))

    print('missing:', missing)
    print('added:', added)

    newpath = r'C:\Users\User\Desktop\BOT_FOLDER\{}'.format(added)
    if not os.path.exists(newpath):
        os.makedirs(newpath)

    if os.path.exists("demofile.txt"):
        os.remove('C:/Users/User/Desktop/BOT_FOLDER/{}').format(missing)
    else:
        print("The file does not exist")

list2是局部变量,仅在循环内部可见,请将其设为全局变量