discord бот python удаляет канал, выдает ошибку

#python #discord #command #discord.py #bots

Вопрос:

Я пытался создать команду, которая удаляет ядерные каналы против ядерного бота, это мой код:

 async def inferno(ctx,problem):
    if problem == ("channelnuke"):
        channel == ("Nuke-channel")
        await ctx.send("okay solving problem")
        await ctx.send("Guard on, every nuke channel will be instant deleted")
        while True:
            
            await channel.delete()
 

Но это выдает ошибку, что у discord нет атрибута delete

 discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: module 'discord.channel' has no attribute 'delete'
 

Кто-нибудь знает, как это должно быть сделано?

Комментарии:

1. Какова цель этого цикла while?

Ответ №1:

К сожалению, я не могу прокомментировать предыдущий ответ из-за моей недостаточной репутации. итак, вот обновленный код предыдущего ответа, это должно сработать сейчас.

 @client.command()
async def inferno(ctx, problem):
    if problem == "channelnuke":
        channel = ctx.channel   # the previous answer had put (==) instead of (=)
        await ctx.send("okay solving problem")
        await ctx.send("Guard on, every nuke channel will be instant deleted")
        await channel.delete()
 

если вы хотите добавить каналы, вы можете сделать это, указав канал в качестве дополнительных аргументов:

 @client.command()
async def inferno(ctx, problem, channel : commands.TextChannelConverter = None): # we will put the channel into an optional arguments by doing = None
    if channel == None: # it will find the channel if you didn't specify the channel
        channel = ctx.channel
    await ctx.send("okay solving problem")
    if problem == "channelnuke":
        await channel.delete()
 

преобразователь textchannel будет просматривать канал, вы можете использовать идентификатор, название канала или упомянуть канал, и он должен работать, более подробная информация об этом будет ниже.

Документы TextChannelConverter

Поблагодарите меня позже 😀

Комментарии:

1. Спасибо, Пикси, ты также знаешь, как я могу указать название канала?

2. Я добавил команду сейчас, она должна работать :D, посмотрите на ответ, который я отредактировал

3. Спасибо, как мне сделать из этого петлю?

Ответ №2:

 async def inferno(ctx, problem):
    if problem == "channelnuke":
        channel == ctx.channel
        await channel.delete()
        await ctx.send("okay solving problem")
        await ctx.send("Guard on, every nuke channel will be instant deleted")
 

Комментарии:

1. это не работает, все равно выдает некоторую ошибку