Для реализации такой логики в Python при использовании модуля telebot, можно воспользоваться возможностью работы с потоками (threads). В данном случае можно создать два отдельных потока - один для каждого бота, и в каждом потоке запускать соответствующего бота.
Для того чтобы один из ботов выключался при возникновении определенного условия (например, получении предупреждения или ошибки), можно использовать механизмы синхронизации потоков в Python. Например, для синхронизации работы двух потоков можно воспользоваться объектом блокировки (Lock).
Вот пример кода, демонстрирующий реализацию этой логики:
import telebot import threading bot1 = telebot.TeleBot("TOKEN1") bot2 = telebot.TeleBot("TOKEN2") lock = threading.Lock() def bot1_worker(): global lock while True: # Логика работы бота 1 if условие_выключения_бота_1: with lock: print("Бот 1 будет выключен") break def bot2_worker(): global lock while True: # Логика работы бота 2 if условие_выключения_бота_2: with lock: print("Бот 2 будет выключен") break thread1 = threading.Thread(target=bot1_worker) thread2 = threading.Thread(target=bot2_worker) thread1.start() thread2.start() thread1.join() thread2.join() # Дальнейший код, который выполнится после выключения одного из ботов
В этом примере создаются два потока, каждый из которых выполняет работу своего бота. При достижении условия выключения бота каждый из потоков сначала захватывает блокировку, выводит сообщение о выключении бота, а затем завершает свою работу. После этого программа продолжает выполнение, начиная с места указанного после thread1.join()
и thread2.join()
.
Это лишь пример реализации задачи. Необходимо учесть, что работа с потоками требует внимания к возможным проблемам с синхронизацией доступа к данным из разных потоков, и рекомендуется глубоко понимать механизмы работы с потоками в Python перед использованием в продакшене.