Python Disord.py-如何列出bot所在的所有服务器?
我正试图使我的机器人上线时,它将检查机器人所在的每台服务器,并在目录中为它们创建一个文件夹,但我一直得到错误列表2未定义,即使iv已定义,代码如下: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:
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是局部变量,仅在循环内部可见,请将其设为全局变量