Как сделать tempmute или мут на некоторое время?

Если мут временный и вы не хотите работать с БДшкой или куда-то что-то записывать, используйте:
await asyncio.sleep(5) # Спим пять секунд.
И через эти 5 секунд, возвращайте права человеку.
1uXeR @1uXeR Автор вопроса
retUrn3d, а можно подробнее, куда это писать?
Решения вопроса 1

Пользователь, просто пользователь.
Это плохой вариант использования, но без лишних затрат.
Если бот будет перезагружен, во время того как у человека висит «мут». То он с ним навсегда и останется.
@client.command(pass_context=True) @commands.has_any_role(860824791610032189, 876086379665301534) async def mute( ctx, member: discord.Member, time: int): emb = discord.Embed(title="Участник Был Замучен!", colour=discord.Color.blue()) await ctx.channel.purge(limit=1) emb.set_author(name=member.name, icon_url=member.avatar_url ) emb.set_footer(text="Его замутил <>".format(ctx.author.name ), icon_url=ctx.author.avatar_url ) await ctx.send(embed=emb) muted_role = discord.utils.get(ctx.message.guild.roles, name="Muted") await member.add_roles(muted_role) # Спим X секунд, перед тем как снять роль. await asyncio.sleep(time) # Снимаем роль замученного. await member.remove_roles(muted_role)
Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 1

Web dev, Game dev, app dev, Разработчик на Python!
Вот вам большой, но сам лучший код на мут со временем как в Mee6
Команда mute в discord.py. Создана роль с ограничением писать в чат, однако пользователь после получения мута может писать — в чем проблема?
Роль успешно выдается, в параметрах этой роли отключена возможность писать сообщения, однако пользователь (в моем случае второй аккаунт) все равно может писать. Что в таком случае делать? В чем ошибка в коде?
P.S. В коде нужные отступы есть, однако тут они не показываются.
- Вопрос задан более года назад
- 502 просмотра
2 комментария
Средний 2 комментария
Как создать бота для Discord? #6 | Мут пользователей | Команда /mute| / unmute| discord.py
![]()
В этом видео вы научитесь создавать команды /mute /unmute для бота Discord. Для создания бота используется библиотека discord.py . Код — https://github.com/wensent-ru/discord-bot-tutorial Телеграм канал: https://t.me/wensent_dev Сервер — https://discord.gg/F43skGszJ4 Сайт для разработчиков — https://discord.com/developers Discord.py документация — https://discordpy.readthedocs.io Среда разработки — PyCharm Музыка — Dark Tranquillity SLYRAX 1
Показать больше
Войдите , чтобы оставлять комментарии
Как реализовать комманду mute discord.py?
Я пишу бота на python и хочу реализовать для него комманду mute, видел варианты с добовлением роли пользывателю, но они не работают(ставил роль без прав даже выше адимина и всеровно мог писать в чат). Также сделал такой код:
@bot.command(pass_context=True, aliases=['замуть', 'mute']) @commands.has_permissions(administrator=True) async def мут(ctx, member: discord.Member = None, amout: str = None, *, reason = None): await member.edit(mute = True) now = datetime.now() emb = discord.Embed() hour = now.hour minute = now.minute second = now.second emb.set_author(name=member, icon_url=member.avatar_url) emb.add_field(name='МУТ', value=f'::') emb.set_footer(text=f'Был замутен администратором ', icon_url=ctx.author.avatar_url) await ctx.send(embed=emb)
Но он просто выключает МИКРОФОН от имени сервера, а мне надо чтобы ты ещё и не мог писать, а не только говрить.
Отслеживать
задан 29 янв 2022 в 20:38
465 1 1 золотой знак 3 3 серебряных знака 10 10 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
создавая роль мьют, нужно в каждой категории(НЕ КАНАЛЕ, А КАТЕГОРИИ В КОТОРЫХ КАНАЛЫ) запретить данной роли то, что вы хотите заблокировать для замьюченых.
лично я использую такой код:
@client.command() @commands.has_any_role(тут id ролей админов/модеров ) async def мут(ctx, user: discord.Member, time: int,*, reason): role = user.guild.get_role(id мьют роли) # айди роли которую будет получать юзер emb = discord.Embed( title = '✅Получилось', description=f"Пользователю выдали мут!\nВремя пробывания в муте: минут\nПричина выдачи мута: !", colour = discord.Color.green()) emb.set_footer(text = 'Действие выполнено модератором/админом - ' + ctx.author.name, icon_url = ctx.author.avatar_url) await ctx.send( embed = emb) await user.add_roles(role) #выдает мьют роль await asyncio.sleep(time * 60) #ждет нужное кол-во секунд умноженных на 60(вы выдаете мут на минуты. Допустим time = 10, то вы выдали мут на 10 минут) await user.remove_roles(role) #снимает мьют роль
он выдает роль мьюта на определенное кол-во минут
но если вы хотите свой код, то я его дописал(тоже на выдачу роли)
@bot.command(pass_context=True, aliases=['замуть', 'mute']) @commands.has_permissions(administrator=True) async def мут(ctx, member: discord.Member = None, time: int, *, reason = None): role = user.guild.get_role(id мьют роли) # айди роли которую будет получать юзер emb = discord.Embed() emb.set_author(name=member, icon_url=member.avatar_url) emb.set_footer(text=f'Был замутен администратором ', icon_url=ctx.author.avatar_url) await ctx.send(embed=emb) await asyncio.sleep(time * 60) #ждет нужное кол-во секунд умноженных на 60(вы выдаете мут на минуты. Допустим time = 10, то вы выдали мут на 10 минут) await user.remove_roles(role) #снимает мьют роль
извините, но убрал часть с datetime.
А, ну и если вам скучно можете получить список всех каналов(голосовых и текстовых) и для текстовых запретить то, что вам нужно и для голосовых. Но это грубо говоря вы в замен выдачи роли с такими-же правами усложняете работу и запрещаете пользователь что-то делать без выдачи роли.