Бинарный Кофе
6 subscribers
44 photos
7 videos
27 links
Download Telegram
Ключевые изменения:

1. continue после ожидания нового дня: Добавлено ключевое слово continue после await asyncio.sleep(wait_seconds) в блоке if wait_for_next_day:. Это заставляет программу перейти к следующей итерации внешнего цикла while True:, пропуская остаток текущей итерации. Это позволяет повторно проверить условия для ожидания нового дня.
2. Ожидание перенесено выше: Ожидание перенесено выше.

Объяснение логики:

1. Внешний цикл while True: Этот цикл обеспечивает постоянную работу бота.
2. Определение необходимости ожидания: В начале каждой итерации внешнего цикла проверяется, нужно ли ждать до 10:00 утра следующего дня (на основе условий, которые мы обсуждали ранее).
3. Если нужно ждать: Если нужно ждать, то бот засыпает до 10:00 утра следующего дня и затем с помощью continue сразу же переходит к следующей итерации внешнего цикла.
4. Если ждать не нужно: Если ждать не нужно, то выполняется внутренний цикл, который отправляет сообщения из очереди, пока не будет достигнут лимит POSTS_PER_DAY или пока очередь не станет пустой.
5. Интервал между постами: После отправки каждого сообщения внутренний цикл засыпает на случайный интервал, полученный с помощью get_random_post_interval().
6. Проверка очереди: После завершения внутреннего цикла бот засыпает на 60 секунд и возвращается к началу внешнего цикла, чтобы повторно проверить, нужно ли ждать до 10:00 утра следующего дня, появились ли новые сообщения в очереди, и т.д.

Теперь код должен работать правильно, отправляя сообщения с случайным интервалом, соблюдая лимит POSTS_PER_DAY и правильно обрабатывая переход к следующему дню. Я очень надеюсь, что это окончательное решение. Прошу тщательно протестировать этот код и сообщить, если возникнут какие-либо проблемы.
Теперь проверка на "новый день" выполняется только в том случае, если last_new_day_check равно None (при первом запуске) или если прошло больше CHECK_NEW_DAY_INTERVAL секунд с момента последней проверки.

Логика работы:

1. При запуске бот инициализирует last_new_day_check значением None.
2. В цикле process_queue проверяется, прошло ли больше часа с момента последней проверки на "новый день".
3. Если прошло больше часа, то выполняется проверка на "новый день" (как и раньше).
4. Если не прошло больше часа, то проверка на "новый день" пропускается.
5. В любом случае, бот продолжает отправлять сообщения (если это возможно) и засыпает на 60 секунд.

Теперь:

• Бот будет проверять, нужно ли ждать до 10:00 утра следующего дня, не чаще чем раз в час.
• Если бот перезапустится в период между 10:00 и 11:00, то он не сразу перейдет в режим ожидания, а продолжит отправлять сообщения (если они есть в очереди и лимит не достигнут), и следующая проверка на "новый день" будет выполнена только через час.

Этот код должен решить все проблемы, которые мы обсуждали, и обеспечить правильную работу бота в течение длительного времени. Пожалуйста, тщательно протестируйте его и сообщите, если возникнут какие-либо проблемы. Я буду готов помочь.
    if last_new_day_check is None or (now - last_new_day_check).total_seconds() >= CHECK_NEW_DAY_INTERVAL:
# Логика проверки на "новый день"
# ...
last_new_day_check = now # Обновляем время последней проверки
    if last_new_day_check is None or (now - last_new_day_check).total_seconds() >= CHECK_NEW_DAY_INTERVAL:
# Логика проверки на "новый день"
# ...
last_new_day_check = now # Обновляем время последней проверки
    if last_new_day_check is None or (now - last_new_day_check).total_seconds() >= CHECK_NEW_DAY_INTERVAL:
# Логика проверки на "новый день"
# ...
last_new_day_check = now # Обновляем время последней проверки
Вы абсолютно правы. Изначальная логика с ожиданием следующего дня при первом запуске (если время запуска после 10 утра) была ошибочной. Необходимо дать возможность отправлять посты сразу после запуска, даже если время запуска уже после 10 утра.

Исправленный код (без ожидания при первом запуске):
    if last_new_day_check is None or (now - last_new_day_check).total_seconds() >= CHECK_NEW_DAY_INTERVAL:
# Логика проверки на "новый день"
# ...
last_new_day_check = now # Обновляем время последней проверки
    if last_new_day_check is None or (now - last_new_day_check).total_seconds() >= CHECK_NEW_DAY_INTERVAL:
# Логика проверки на "новый день"
# ...
last_new_day_check = now # Обновляем время последней проверки
Browser

# Один браузер может содержать множество контекстов
browser = playwright.chromium.launch()
context1 = browser.new_context()
context2 = browser.new_context()
This media is not supported in your browser
VIEW IN TELEGRAM
Анекдот дня: певице на Евровидении от Мальты запретили петь песню из-за одного слова.

Её песня называется «Kant», что с мальтийского переводится как «пение». Но оно звучит как английское «cunt», что переводится как п%зда, а фраза «serving kant» — «служить п%зде».

Многоходовочка с игрой слов не сработала, и теперь ей нужно либо заменить слово, либо выбрать другую песню, либо же совсем не участвовать.
Игра Израиля на Ближнем Востоке.

Израиль сейчас старается через США сохранить военную базу России в Сирии.

Напомню, Россия поддерживает Иран и аккуратно, негласно, его прокси (экзистенциальные враги Израиля).

Израиль опасается растущего влияния Турции в Сирии (Турция вражеская для них страна + сосед). Также Турция не совсем уж дружественная для России - потому воен.база там это общий интерес Израиля и России.

В свою очередь ЕС всячески подкупает Сирию, чтобы эту базу там свернули. Предлагает снять санкции с Сирии.

Голосуя против Украины в ООН Израиль получает лояльность Трампа, но дает определенную военную помощь Украине, потому что Россия все еще недружественная страна из-за союза с Ираном.

Сирия сейчас купается в выгодных предложениях 😂