Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Дискорд бот Disnake

Матвей Сундук Ученик (178), на голосовании 8 месяцев назад
Помогите сделать временый мут и временый бан в дискорд боте на disnake python
Голосование за лучший ответ
Max Morozov Мастер (1556) 9 месяцев назад
Временный мут:
 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)
Похожие вопросы