Как дать роль участнику сервера временно discord.py (python)?

Рейтинг: 0Ответов: 1Опубликовано: 20.05.2023

У меня есть бот, у которого есть команда !emprison. Данная команда должна добавить роль участнику сервера, но на время которое было задано. Как добавлять роли я знаю, но как дать временно? Также мне нужно чтобы команда работала только если у участника который написал команду, есть определенные роли.

Пример кода:

import discord
from discord.ext commands

intents = discord.Intents.all()
bot = commands.Bot(command_prefix="!", intents=intents)

@bot.command()
async def emprison(ctx, member_mention, time):
    time = int(time)

     user = ctx.author
     guild = self.get_guild(id)
     role = guild.get_role(id)

     await user.add_roles(role) # И тут выдается роль, но навсегда. Как это сделать временно?

Ответы

▲ 0Принят

Пример команды для выдачи роли и затем удаления её.

@bot.command()
async def emprison(ctx, member: discord.Member, duration: int):
    role = discord.utils.get(ctx.guild.roles, name='Имя_роли')  
    if role is None:
        await ctx.send("Такой роли нет.")
        return

    await member.add_roles(role)
    await ctx.send(f"Роль {role.name} добавлена пользователю {member.mention} на {duration} секунд.")

    await asyncio.sleep(duration)

    await member.remove_roles(role)
    await ctx.send(f"Роль {role.name} удалена у пользователя {member.mention}.")

Пример команды: !emprison @mrBars1k 10

Думаю, проблем с адаптацией под Ваши нужны не возникнет.