Как я поглядел, 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 и откажется выполнять наши
хотелки.