@beamerbog

Как поставить таймер в функции on_message в discord.py?

Добрый день.

Суть проблемы в том, что я никак не могу поставить таймер на функцию on_message в discord.py.
Начал создавать своего Discord-бота совсем недавно, поэтому очень сильно нужна помощь опытных программистов.

Я создаю команду kick, при ее вводе пользователь упоминает пользователя которого он хочет кикнуть, а затем причину кика. Бот спрашивает подтверждение на то чтобы выгнать пользователя. Затем, с помощью on_message бот узнает, что ответил пользователь (если "+" — кик подтвержден). Все работает хорошо, но мне нужно поставить цикл заданный на определенное кол-во времени, чтобы если пользователь вообще ничего не вводил, в течении 10 секунд ему будет выведено сообщение "Время ожидания закончилось" и бот перестал ждать подтверждения.
Собственно, если пользователь ввел "+" - таймер сбросился и юзер был кикнут.

Вот код самой команды:

@Bot.command()
async def kick(ctx, member: discord.Member, reason):
	await ctx.send(f'Вы действительно хотите выгнать с сервера {member.mention} по причине: {reason}?')
	#здесь должен находиться таймер 10-ти секунд, по истечению которого выдается await ctx.send('Время ожидания вышло.')
	#если же пользователь введет что-либо, таймер прекращает работу и код продолжается.
	@Bot.event
	async def on_message(message):
		if message.author == ctx.message.author and message.author.bot == False and message.content == '+':
			await ctx.send('Пользователь был успешно кикнут.')
			# kick
		if message.author == ctx.message.author and message.author.bot == False and message.content != '+':
			@Bot.event
			async def on_message(message):
				await Bot.process_commands(message)
		await Bot.process_commands(message)


Перепробовал уже огромное количество вариантов как это можно реализовать, не получается ничего...
Надеюсь какой нибудь добрый человек поможет, если сделать подобное вообще возможно...
Учитывая что даже, если message.content меняется (например на тот же "
"), цикл все равно делает проверку со старым message.content'ом (который не равен "+" и соответственно условие проходит дальше).

Заранее спасибо!
  • Вопрос задан
  • 3700 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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