@TanderOFF

Как сделать timemute?

Не могу найти информацию по теме как отправить человека "Подумать о своём поведение"
Есть ли у кого код или информация на доки ?
  • Вопрос задан
  • 1061 просмотр
Пригласить эксперта
Ответы на вопрос 1
retUrn3d
@retUrn3d
Пользователь, просто пользователь...
Как я поглядел, discord.py(Думаю что используете именно его) не имеет такой штуки в виде таймаута юзверя.
Так что вам необходимо укусить зубами основу основ. В основе основ можно увидеть желанную строчку communication_disabled_until

Так что перейдем к делу, нам дано: Рука, палец на руке, мозг(опционально).
bot.session = aiohttp.ClientSession()

@bot.command()
async def habr(ctx: commands.Context, member: discord.Member, time: int):
    # Авторизация бота.
    headers = {"Authorization": f"Bot {bot.http.token}"}
    url = f"https://discord.com/api/v9/guilds/{ctx.guild.id}/members/{member.id}"
    # Расчет времени "отправки на покушать.". Получаем время именно по utcnow. 
    # В противном случае, рискуем отправить человека кушать до конца времен. Ну почти.
    timeout = (datetime.datetime.utcnow() + datetime.timedelta(minutes=time)).isoformat()
    json = {'communication_disabled_until': timeout}
    # Отправка запроса.
    async with bot.session.patch(url, json=json, headers=headers) as session:
        if session.status == 200:
            await ctx.send(f'Пользователь {member.mention} пошел кушать на {time} минут.')
        await ctx.send(f'Воу-воу! Этого пользователя нельзя отправить кушать')


Готово.
Если попытаться откинуть погулять пользователя, который создал канал или имеет права администратора, дискорд нам вернет код 403 и откажется выполнять наши хотелки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы