Python 克隆和删除频道:Discord.py @client.command() @commands.is_owner() 异步def nuke(ctx,通道名称): 现有频道=discord.utils.get(guild.channels,name=channel\u name) 如果现有_通道不是无: 等待克隆(name=channel\u name,reason=“Has-nuked”) 等待现有的_通道。删除() 其他: wait ctx.send(未找到名为**{channel_name}**的频道)

Python 克隆和删除频道:Discord.py @client.command() @commands.is_owner() 异步def nuke(ctx,通道名称): 现有频道=discord.utils.get(guild.channels,name=channel\u name) 如果现有_通道不是无: 等待克隆(name=channel\u name,reason=“Has-nuked”) 等待现有的_通道。删除() 其他: wait ctx.send(未找到名为**{channel_name}**的频道),python,discord,discord.py,Python,Discord,Discord.py,我在discord上见过多个机器人已经可以通过一个核命令来完成这项任务,但我想自己学习如何完成这项任务。问题是,我的机器人无法检测到我提到的频道(如附件中所示)。我发现了一个与此类似的问题,关于“正确地对通道进行核爆”,但他们使用的是齿轮。帮忙 您使用的clone()错误,它的Channel.clone()不仅仅是clone() 以下是修订后的代码 @client.command() @commands.is_owner() 异步def nuke(ctx,通道名称): 现有频道=discord.

我在discord上见过多个机器人已经可以通过一个核命令来完成这项任务,但我想自己学习如何完成这项任务。问题是,我的机器人无法检测到我提到的频道(如附件中所示)。我发现了一个与此类似的问题,关于“正确地对通道进行核爆”,但他们使用的是齿轮。帮忙

您使用的
clone()
错误,它的
Channel.clone()
不仅仅是
clone()

以下是修订后的代码

@client.command()
@commands.is_owner()
异步def nuke(ctx,通道名称):
现有频道=discord.utils.get(guild.channels,name=channel\u name)
如果现有_通道不是无:
等待现有的\u channel.clone(reason=“Has nuked”)
等待现有的_通道。删除()
其他:
wait ctx.send(未找到名为**{channel_name}**的频道)
您使用的
clone()
错误,它的
Channel.clone()
不仅仅是
clone()

以下是修订后的代码

@client.command()
@commands.is_owner()
异步def nuke(ctx,通道名称):
现有频道=discord.utils.get(guild.channels,name=channel\u name)
如果现有_通道不是无:
等待现有的\u channel.clone(reason=“Has nuked”)
等待现有的_通道。删除()
其他:
wait ctx.send(未找到名为**{channel_name}**的频道)

Poojan已经指出您使用了错误的命令进行克隆。 我正在使用他们的代码,但是在您希望频道名称成为可点击的示例频道的地方进行了更改

标记频道时,bot会看到:
,而不是
#示例频道
。我们只需要数字就可以得到频道ID。代码的前两行

@client.command()
@commands.is_owner()
async def nuke(ctx, channel_name):
    channel_id = int(''.join(i for i in channel_name if i.isdigit())) 
    existing_channel = client.get_channel(channel_id)
    if existing_channel:
        await existing_channel.clone(reason="Has been nuked")
        await existing_channel.delete()
    else:
        await ctx.send(f'No channel named **{channel_name}** was found')


尝试调试时的一个好主意是
print()
不同的对象,以便查看它们是什么


print(channel\u name)
将显示机器人在标记时看到的内容。您可能可以从中看出它找不到任何“频道名称”的原因。

Poojan已经指出您使用了错误的命令进行克隆。 我正在使用他们的代码,但是在您希望频道名称成为可点击的示例频道的地方进行了更改

标记频道时,bot会看到:
,而不是
#示例频道
。我们只需要数字就可以得到频道ID。代码的前两行

@client.command()
@commands.is_owner()
async def nuke(ctx, channel_name):
    channel_id = int(''.join(i for i in channel_name if i.isdigit())) 
    existing_channel = client.get_channel(channel_id)
    if existing_channel:
        await existing_channel.clone(reason="Has been nuked")
        await existing_channel.delete()
    else:
        await ctx.send(f'No channel named **{channel_name}** was found')


尝试调试时的一个好主意是
print()
不同的对象,以便查看它们是什么


print(channel\u name)
将显示机器人在标记时看到的内容。您可能可以从中看出它找不到任何“频道名称”的原因。

您好。您试图传递的
频道名称是什么?当您标记一个频道(示例频道)并且它是指向该频道的可单击链接时,它实际上使用频道ID,并且将被删除。您的搜索将找不到。您必须键入
nuke example channel
进行搜索才能找到任何内容我遇到的问题是,无论键入什么,我都不会收到错误消息。您试图传递的
频道名称是什么?当您标记一个频道(示例频道)并且它是指向该频道的可单击链接时,它实际上使用频道ID,并且将被删除。您的搜索将找不到。您必须键入
nuke example channel
才能搜索到任何内容我遇到的问题是,无论键入什么,我仍然不会收到错误消息,我发现这确实克隆了频道,但没有删除频道。我会看看这背后是否有什么原因。我发现这确实克隆了频道,但没有删除频道。同时,我会看看这背后是否有任何原因。
如果现有频道不是无:
可以缩短为仅
如果现有频道:
@kr8gz True!谢谢你指出这一点。现在在代码中更改它。
如果现有频道不是无:
可以缩短为仅
如果现有频道:
@kr8gz True!谢谢你指出这一点。现在在代码中更改它。