Для создания команды в боте Discord, которая выдает определенную роль и удаляет все другие роли у пользователя, можно использовать следующий код на языке Python с библиотекой discord.py:
```python
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 assign_role(ctx, role_name: str):
role = discord.utils.get(ctx.guild.roles, name=role_name)
member = ctx.author
if role:
await member.add_roles(role)
for r in member.roles:
if r != role:
await member.remove_roles(r)
await ctx.send(f"Role {role_name} assigned successfully.")
else:
await ctx.send("Role not found.")
bot.run('TOKEN')
```
Для временного приостановления привилегий участника и автоматического возвращения роли после истечения указанного срока наказания можно использовать библиотеку discord.ext.tasks для планирования событий:
```python
import discord
from discord.ext import commands, tasks
intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.command()
async def punish(ctx, member: discord.Member, duration: int):
punish_role = discord.utils.get(ctx.guild.roles, name='Punished')
member_role = discord.utils.get(ctx.guild.roles, name='Member')
if not punish_role:
punish_role = await ctx.guild.create_role(name='Punished')
if not member_role:
await ctx.send("Member role not found.")
return
await member.add_roles(punish_role)
await member.remove_roles(member_role)
await ctx.send(f"{member.display_name} has been punished for {duration} hours.")
await asyncio.sleep(duration*3600)
await member.add_roles(member_role)
await member.remove_roles(punish_role)
await ctx.send(f"{member.display_name} has been unpunished.")
bot.run('TOKEN')
```
Обратите внимание, что вам нужно будет настроить разрешения бота и сервера для корректной работы этих команд.