import telebot
import threading
import time
bot = telebot.TeleBot('YOUR_API_KEY')
# Словарь для хранения предложений и таймеров
proposals = {}
# Команда для предложения
@bot.message_handler(commands=['propose'])
def propose(message):
user1 = message.from_user.first_name
user2 = message.text.split()[1]
# Сохранение предложения
proposals[user2] = {
'from': user1,
'timestamp': time.time()
}
bot.send_message(message.chat.id, f"{user1} предложил руки и сердца {user2}. У вас есть 5 минут на соглашение, иначе брак не будет осуществлён.")
# Запуск таймера
threading.Timer(300, check_proposal, args=(message.chat.id, user2)).start()
# Команда для соглашения
@bot.message_handler(commands=['accept'])
def accept(message):
user2 = message.from_user.first_name
if user2 in proposals:
user1 = proposals[user2]['from']
bot.send_message(message.chat.id, f"{user2} согласился на предложение {user1}. Брак состоялся!")
# Удаление предложения после согласия
del proposals[user2]
else:
bot.send_message(message.chat.id, "Предложение не найдено или время истекло.")
# Функция для проверки предложения по истечении времени
def check_proposal(chat_id, user2):
if user2 in proposals:
bot.send_message(chat_id, f"Время истекло. Брак между {proposals[user2]['from']} и {user2} не состоялся.")
del proposals[user2]
# Запуск бота
bot.polling(none_stop=True)
Как это работает:
Когда пользователь отправляет команду /propose @username, бот сохраняет это предложение и запускает таймер на 5 минут (300 секунд).
Если в течение 5 минут пользователь, которому сделали предложение, отправит команду /accept, то брак состоится, и предложение будет удалено.
Если 5 минут пройдут без ответа, сработает таймер, и предложение будет отменено.
Этот код использует поток для отсчёта времени и реагирует на события, которые происходят до истечения времени.