如何解决Discord Py - 如何从类别中删除选择性频道
代码如下:
@commands.command(aliases=['delallchannel'])
async def deleteallChannel(self,ctx):
category_name = "Pets_Private_Channels"
categoryName = discord.utils.get(ctx.guild.categories,name=category_name)
categoryID = categoryName.id
globalChannel1 = "1_pets_global_channel"
globalChannel2 = "2_pets_global_channel"
globalChannel3 = "3_pets_global_channel"
#print(categoryID)
category = self.client.get_channel(categoryID)
for channel in category.text_channels:
#print(channel," This is the channel")
if channel == globalChannel1:
print(globalChannel1)
elif channel == globalChannel2:
print(globalChannel2)
elif channel == globalChannel3:
print(globalChannel3)
else:
await channel.delete()
#if channel != globalChannel1 or channel != globalchannel2 or channel != globalchannel3:
#await channel.delete()
``
Im having some difficulties trying to write a command that would delete all channels but not 3 selected ones within a set category. I think the issue Could be to do with the if statement. Even when the `channel == globalchannel` is the same value,it still skips to else. Does anyone kNow why? or how i Could fix this issue?
Thanks in advance. Much appreciated for anyone that is helping out on this.
解决方法
您正在检查 discord.TextChannel
对象是否等于字符串。有两种方法可以做到这一点:
您可以将频道转换为字符串,这将使其等于频道名称。
for channel in category.text_channels:
if str(channel) == globalChannel1:
print(globalChannel1)
# continue with other if statements
或者您可以discord.utils.get
频道。
globalChannel1 = discord.utils.get(category.text_channels,name="1_pets_global_channel")
# Repeat for other channels
请注意,两者仅在频道名称与字符串相同时才有效。区分大小写。
另外,请注意您正在获取一个频道和一个类别 ID。你应该这样做...
category_name = "Pets_Private_Channels"
# ... other stuff
category = discord.utils.get(ctx.guild.categories,name=category_name)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。