Временный мут:
async def tempmute(ctx, member: discord.Member, duration: int, reason: str):
"""
Функция для временного мута пользователя.
Args:
ctx: контекст команды
member: пользователь, который будет замучен
duration: продолжительность мута в секундах
reason: причина мута
"""
muted_role = discord.utils.get(ctx.guild.roles, name="Muted")
if not muted_role:
muted_role = await ctx.guild.create_role(name="Muted")
await muted_role.edit(permissions=discord.Permissions(send_messages=False, speak=False))
await member.add_roles(muted_role)
await ctx.send(f"{member.mention} был замучен на {duration} секунд за {reason}")
await asyncio.sleep(duration)
await member.remove_roles(muted_role)
@bot.command()
async def mute(ctx, member: discord.Member, duration: int, reason: str):
"""
Команда для временного мута пользователя.
Args:
ctx: контекст команды
member: пользователь, который будет замучен
duration: продолжительность мута в секундах
reason: причина мута
"""
if not ctx.author.guild_permissions.moderate_members:
return await ctx.send("У вас нет прав на мут пользователей.")
if duration < 1:
return await ctx.send("Продолжительность мута должна быть больше 0 секунд.")
await tempmute(ctx, member, duration, reason)
Временный бан:
async def tempban(ctx, member: discord.Member, duration: int, reason: str):
"""
Функция для временного бана пользователя.
Args:
ctx: контекст команды
member: пользователь, который будет забанен
duration: продолжительность бана в секундах
reason: причина бана
"""
await member.ban(reason=reason)
await ctx.send(f"{member.mention} был забанен на {duration} секунд за {reason}")
await asyncio.sleep(duration)
await member.unban()
@bot.command()
async def ban(ctx, member: discord.Member, duration: int, reason: str):
"""
Команда для временного бана пользователя.
Args:
ctx: контекст команды
member: пользователь, который будет забанен
duration: продолжительность бана в секундах
reason: причина бана
"""
if not ctx.author.guild_permissions.ban_members:
return await ctx.send("У вас нет прав на бан пользователей.")
if duration < 1:
return await ctx.send("Продолжительность бана должна быть больше 0 секунд.")
await tempban(ctx, member, duration, reason)