Это зависит от того, что вы подразумеваете под «временным баном».
Хотите ли вы, чтобы пользователь был фактически выгнан и заблокирован с сервера на определенный период времени, или вы хотите, чтобы пользователь был временно ограничен определенными разрешениями, такими как общение в чате?
Я рекомендую последний вариант и использую ветвь Discord rewrite API, которая является новой и улучшенной.
Ограничить участника с помощью назначения роли и неограниченно через x секунд:
@bot.command()
async def restrict(ctx, member:discord.Member, duration: int):
role = discord.utils.get(ctx.guild.roles, name="Restricted")
await member.add_roles(role)
await asyncio.sleep(duration)
await member.remove_roles(role)
Забанить пользователя и снять бан через x секунд:
@bot.command()
async def ban(ctx, user:discord.User, duration: int):
await ctx.guild.ban(user)
await asyncio.sleep(duration)
await ctx.guild.unban(user)
Имейте в виду, что если ваш бот вылетает или отключается от сети по какой-либо причине, пока он находится в процессе сна, чтобы разблокировать пользователя, бот не разблокирует пользователя после того, как он вернется, поэтому что-то, что стоит рассмотреть, может быть базы данных и хранения времени окончания бана. Затем вы можете запросить все сохраненные даты во время запуска бота, чтобы выяснить, как долго нужно спать. Кроме того, вам придется получить их объект User, а не объект Member, поскольку они больше не являются частью гильдии.