Как дать роль участнику сервера временно discord.py (python)?
У меня есть бот, у которого есть команда !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) # И тут выдается роль, но навсегда. Как это сделать временно?
Ответы (1 шт):
Автор решения: mrBars1k
→ Ссылка
Пример команды для выдачи роли и затем удаления её.
@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
Думаю, проблем с адаптацией под Ваши нужны не возникнет.