Telegram Bot с потоком отправляет несколько дубликатов сообщения

У меня свой TG бот с аукционами. Когда выкладывается аукцион, то у него есть время окончания, по этому времени окончания победителю должно отправляться сообщение, но если таких аукционов много, то, видимо, потоки пересекаются и отправляется несколько сообщений, что он победил. Как быть? Помогите, пожалуйста.

auction_on - словарик для хранения данных об аукционе, тут важна сама логика, как сделать так, чтобы потоки не пересекались?

def auction_stop_processing(name, end_time):
    print(end_time)
    end_time = end_time.split()[1]

    schedule.every().day.at(end_time).do(auction_stop, name)
    schedule_thread = threading.Thread(target=run_auction_stop)
    schedule_thread.start()


def auction_stop(auction_name):
    print('check')
    max_bidder_id = None
    max_bid = 0

    bids = auction_on.get(auction_name, {})

    for bidder_id, bid in bids.items():
        bid_value = float(bid)
        if bid_value > max_bid:
            max_bid = bid_value
            max_bidder_id = bidder_id

    if max_bidder_id:
        print('correct try to stop a lot')
        send_winning_message(max_bidder_id, auction_name, max_bid)


def send_winning_message(user_id, auction_name, winning_bid):
    message = f"Поздравляем! Вы победили на аукционе '{auction_name}' с предложением {winning_bid} BYN."
    bot.send_message(user_id, 'U a winning')


def run_auction_stop():
    while True:
        schedule.run_pending()
        time.sleep(1)

Ответы (1 шт):

Автор решения: Bi Diaz

Создай булевую переменную. Перед отправкой сообщения о победе сделай проверку, если переменная равнa False - отправляем сообщение и меняем значение на True. Если True - не отправляем.

→ Ссылка