Python 有没有办法找到频道所在的位置并将其放回原来的位置?

Python 有没有办法找到频道所在的位置并将其放回原来的位置?,python,discord,discord.py-rewrite,Python,Discord,Discord.py Rewrite,抱歉,还有一个问题,有没有办法找到频道的位置?所以,如果我删除了一个名为“memes”的频道,它就会重新制作自己,回到原来的位置。不管怎样,你想这么做吗?任何帮助都会很好 下面是一个示例,大致完成了您希望它完成的任务。这不是一个完美的工作脚本,但我觉得它足以为您指出正确的方向 在on\u guild\u join上,这个机器人会列出它能看到的所有频道。(注意,在我的测试中,这个bot具有管理权限,您需要修改您的个人权限才能让它为您工作)。一旦它刮取通道,它就会将信息保存到一个.json文件中 在

抱歉,还有一个问题,有没有办法找到频道的位置?所以,如果我删除了一个名为“memes”的频道,它就会重新制作自己,回到原来的位置。不管怎样,你想这么做吗?任何帮助都会很好

下面是一个示例,大致完成了您希望它完成的任务。这不是一个完美的工作脚本,但我觉得它足以为您指出正确的方向

on\u guild\u join
上,这个机器人会列出它能看到的所有频道。(注意,在我的测试中,这个bot具有管理权限,您需要修改您的个人权限才能让它为您工作)。一旦它刮取通道,它就会将信息保存到一个.json文件中

关于工会频道的
关于工会频道的
关于工会频道的
关于更新的
关于工会频道的
关于创建的
,bot会比较被删除的频道,并对照“预期”频道的字典进行检查。如果匹配,将重新创建频道/类别并将其放入正确的类别中。这部分有点问题,我没有时间让它完美工作,但这可能是一个很好的练习,你可以试着玩一下

导入不一致
从discord.utils导入获取
导入json
client=discord.client()
TOKEN=open('TOKEN.txt').read()
@客户端事件
加入(公会)时的异步定义:
"""
每当我们的机器人被邀请进入服务器时调用
"""
#创建一个字典来保存我们的频道
公会频道={}
#获取公会中刚加入的所有频道
对于guild.channels中的频道:
#确定频道是否为类别
如果频道类别:
#在我们的字典中存储信息(如果分类)
帮会频道[频道名称]={
“channel_name”:channel.name,
“channel_type”:channel.type.name,
“类别”:channel.category.name
}
其他:
#在我们的字典中存储信息(如果是类别)
帮会频道[频道名称]={
“channel_name”:channel.name,
“channel_type”:channel.type.name,
“类别”:无
}
#将我们的信息保存到JSON文件以便持久化
将open('./{}_channels.json'.格式(guild.id),'w')作为gFile:
json.dump(公会频道,gFile,缩进=4)
@客户端事件
通道上的异步定义删除(通道):
"""
每当删除频道时调用
"""
#获取所有预期频道的列表
将open('./{}_channels.json'.格式(channel.guild.id),'r')作为gFile:
预期的_channels=json.load(gFile)
#检查通道是否在预期的\u通道中
如果预期的_通道中有channel.name:
#如果它是一个类别,请重新制作该类别
如果不需要\u频道[channel.name]['category']:
等待频道。公会。创建频道类别(预期频道[频道名称]['channel\u名称])
#如果它不是一个类别,那么制作一个频道并将其放入它应该拥有的类别中
如果频道类别:
如果需要_频道[channel.name]['channel_type']=='text':
等待channel.guild.create_text_channel(预期的_channels[channel.name]['channel\u name'],category=get(channel.guild.channels,name=预期的_channels[channel.name]['category']))
如果需要_频道[channel.name]['channel_type']=='voice':
等待channel.guild.create_voice_channel(预期_channels[channel.name]['channel\u name'],category=get(channel.guild.channels,name=预期_channels[channel.name]['category']))
@客户端事件
通道上的异步定义创建(通道):
#获取所有预期频道的列表
将open('./{}_channels.json'.格式(channel.guild.id),'r')作为gFile:
预期的_channels=json.load(gFile)
如果预期的_通道中有channel.name:
如果channel.category!=预期的_频道[channel.name]['category']:
等待channel.edit(category=get(channel.guild.channels,name=expected_channels[channel.name]['category']))
@客户端事件
通道更新上的异步定义(之前、之后):
#获取所有预期频道的列表
将open('./{}_channels.json'.format(before.guild.id),'r')作为gFile:
预期的_channels=json.load(gFile)
#将频道移动到各自的类别
如果在预期的_通道中使用before.name:
如果在之前。类别!=预期的_频道[before.name]['category']:
wait after.edit(category=get(before.guild.channels,name=expected_channels[before.name]['category']))
@客户端事件
_ready()上的异步定义:
打印(“就绪”)
client.run(令牌)

我们能举一个你到目前为止尝试过的例子吗?@MarkCook我已经看了所有的文档,但我甚至不知道从哪里开始。似乎从来没有人问过这样的问题,即使这是可能的。
textchannel
下的
position
属性可能是一个很好的起点。简而言之,我要做的是创建一个包含所有当前通道及其位置的.json文件,在这一点上,您创建了一个任务,该任务将检查您的所有频道,检查时间为
x
秒或分钟,并将当前存在的频道与您的json文件中应该存在的频道进行比较,然后让它重新制作并重新定位所有丢失的频道。我是discord.py新手,如何让它保存所有频道@MarkCookSaving channels不是
discord.py
特定功能。保存持久化信息是使用python语言所做的事情。库不是用来做所有事情的,它是用来帮助特定的asp