Discord Bot for Deleting All Channels and Roles with Admin Command

Answered using ChatGPT 4o by ChatGPT4o

Question:

import discord from discord.ext import commands import asyncio

intents = discord.Intents.default() intents.guilds = True intents.guild_messages = True intents.guild_reactions = True intents.message_content = True intents.members = True

bot = commands.Bot(command_prefix='/', intents=intents)

@bot.event async def on_ready(): print(f'Вошел как {bot.user}')

async def delete_all_channels(guild): for channel in guild.channels: try: await channel.delete() except discord.Forbidden: print(f"Нет прав для удаления канала {channel.name}") except Exception as e: print(f"Не удалось удалить канал {channel.name}: {e}")

async def delete_all_roles(guild): for role in guild.roles: if role != guild.default_role: try: await role.delete() except discord.Forbidden: print(f"Нет прав для удаления роли {role.name}") except Exception as e: print(

Answer:
f"Не удалось удалить роль {role.name}: {e}")

@bot.command()
@commands.has_permissions(administrator=True)
async def nuke(ctx):
    guild = ctx.guild
    await ctx.send("Начинаю удаление всех каналов и ролей...")

    # Удаление всех каналов
    await delete_all_channels(guild)
    await ctx.send("Все каналы удалены.")

    # Удаление всех ролей
    await delete_all_roles(guild)
    await ctx.send("Все роли удалены.")

    await ctx.send("Удаление завершено.")

@nuke.error
async def nuke_error(ctx, error):
    if isinstance(error, commands.MissingPermissions):
        await ctx.send("У вас нет прав для выполнения этой команды.")
    else:
        await ctx.send(f"Произошла ошибка: {error}")

bot.run('YOUR_BOT_TOKEN')

Объяснение кода:

  1. Импорты и настройки:

    • Импортируются необходимые модули discord и commands из discord.ext.
    • Настраиваются intents для бота, чтобы он мог получать информацию о серверах, сообщениях, реакциях и участниках.
  2. Создание бота:

    • Создается экземпляр бота с префиксом команд / и настроенными intents.
  3. Событие on_ready:

    • Выводит сообщение в консоль, когда бот успешно подключается.
  4. Функции для удаления каналов и ролей:

    • delete_all_channels(guild): Удаляет все каналы в указанном сервере (гильдии).
    • delete_all_roles(guild): Удаляет все роли в указанном сервере, кроме роли по умолчанию.
  5. Команда nuke:

    • Команда, которую может выполнить только администратор, чтобы удалить все каналы и роли на сервере.
    • Отправляет сообщения в канал о начале и завершении процесса удаления.
  6. Обработка ошибок команды nuke:

    • Если у пользователя нет прав администратора, отправляется сообщение об этом.
    • Если возникает другая ошибка, отправляется сообщение с описанием ошибки.
  7. Запуск бота:

    • Бот запускается с указанным токеном.

Важно:

  • Безопасность: Команда nuke очень опасна и может нанести серьезный ущерб серверу. Используйте ее с осторожностью и только в тех случаях, когда это действительно необходимо.
  • Права доступа: Убедитесь, что у бота есть необходимые права для удаления каналов и ролей.
  • Токен: Замените 'YOUR_BOT_TOKEN' на реальный токен вашего бота. Никогда не делитесь токеном