@ploblovk
ыы

Как сделать команду tempmute discord.py?

Как сделать, так чтобы мьютить можно было не по секундам, а по минутам/часами/дни?
Вот код:

@bot.command(pass_context=True)
@commands.has_permissions(administrator=True)
async def mute(ctx, member: discord.Member, time=0, *, reason=None):
    emb = discord.Embed(title="", colour=discord.Color.blue())
    await ctx.channel.purge(limit=1)
    author = ctx.message.author
    emb.set_author(name=f"{member} был Замьютен!", icon_url=member.avatar_url)
    emb.set_footer(text=f"Дал мьют: {author}\nПричина: {reason}\nСколько секунд: {time}", 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)

    if time == None:
        await ctx.send("Время: Навегда")
    elif reason == None:
        await ctx.send("Причина: не указано")
    await asyncio.sleep(time)
    await member.remove_roles(muted_role)
    await ctx.channel.purge(limit=1)
    await ctx.send(f"Роль-мьют с {member.mention} снята\nПрошло: {time} секунд")
  • Вопрос задан
  • 303 просмотра
Решения вопроса 1
x4zx
@x4zx
python developer
Сперва советую ознакомиться с более новой версией библиотеки на которой пишите и понять что pass_context=True, уже давно не используются.

Во-вторых: если вы хотите выдавать мут на какое-то количество времени, то необходимо использовать базу данных и различные циклы чтобы через заданное время бот снял мут. Как минимум в функции должно быть не time=0, a time: int = None

К вашему счастью разработчики Discord сделали всё за вас и теперь можно написать подобную функцию очень быстро.
Возьмите этот видеоролик за пример, даже без знания английского там все очень понятно при просмотре - https://youtu.be/W2TcxVNctw8
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы