Как вписать в дискорд бота команду по выдаче роли с удалением предыдущих ролей?

Для того, чтобы реализовать команду в вашем Discord боте на Python, которая будет выдавать определенную роль пользователю с удалением предыдущих ролей, вам понадобится библиотека discord.py.

Ниже представлен пример кода для бота, который выполняет указанное действие:

import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix='!', intents=intents)

@bot.command()
async def set_role(ctx, role_name: str):
    role = discord.utils.get(ctx.guild.roles, name=role_name)
    
    if role is None:
        await ctx.send(f"Роль `{role_name}` не найдена")
        return

    member = ctx.author
    await member.edit(roles=[role])

    await ctx.send(f"Роль `{role_name}` успешно установлена для вас")

bot.run('токен_вашего_бота')

В этом коде в команде set_role происходит следующее:

1. Бот ищет роль с переданным именем role_name в списке ролей сервера.
2. Если роль не найдена, бот отправляет сообщение об ошибке.
3. Если роль найдена, бот применяет эту роль к пользователю (ctx.author), удаляя все предыдущие роли (метод edit(roles=[role])).
4. Бот отправляет сообщение об успешной установке роли пользователю.

Не забудьте заменить 'токен_вашего_бота' на реальный токен вашего Discord бота.

После написания кода, вы можете добавить вашего бота на сервер и использовать команду !set_role <название_роли> для установки новой роли с удалением предыдущих ролей.