From 6033095e89c7b3bcc57248ec2ef4280d017f36d7 Mon Sep 17 00:00:00 2001 From: localhost_frssoft Date: Wed, 31 Aug 2022 22:32:16 +0300 Subject: [PATCH] Changes listener mention MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Расчет даты следующего FMN * Установка времени когда прекращать сканировать тред на фильмы --- src/listener_mention.py | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/listener_mention.py b/src/listener_mention.py index bc97c78..128a664 100644 --- a/src/listener_mention.py +++ b/src/listener_mention.py @@ -1,7 +1,11 @@ from src.fedi_api import get_notifications, mark_as_read_notification, post_status from src.fmn_states_db import add_state from config import main_admin_bot, limit_movies_per_user, limit_all_movies_poll, hour_poll_posting + import threading, time +from datetime import datetime +from dateutil.parser import parse as dateutilparse +from dateutil.relativedelta import relativedelta, TU, SU acct_admin_bot=main_admin_bot @@ -11,16 +15,28 @@ def get_control_mention(acct_admin_bot=str): for i in notif: if i['account']['acct'] == acct_admin_bot and i['pleroma']['is_seen'] == False and i['status']['in_reply_to_id'] == None: st_id = i['status']['id'] - post_status(start_collect_movies_text(), st_id) + st_date = i['status']['created_at'] + thread_created_at = dateutilparse(st_date) + delta = relativedelta(hour=hour_poll_posting, minute=0, second=0, weekday=TU(1)) + next_movie_watching_delta = relativedelta(hour=21, minute=0, second=0, weekday=SU(1)) + stop_thread_scan = thread_created_at + delta + next_movie_watching = thread_created_at + next_movie_watching_delta + next_movie_watching = next_movie_watching.strftime('%d.%m.%Y') + movies_accept_time = stop_thread_scan.strftime('%H:%M %d.%m.%Y MSK') + stop_thread_scan = time.mktime(time.struct_time(stop_thread_scan.timetuple())) + + post_status(start_collect_movies_text(movies_accept_time, next_movie_watching), st_id) time.sleep(0.2) mark_as_read_notification(i['id']) + add_state('stop_thread_scan', int(stop_thread_scan)) add_state('last_thread_id', st_id) + break time.sleep(30) -def start_collect_movies_text(): +def start_collect_movies_text(movies_accept_time=str, next_movie_watching=str): text = f''' - Начинаем прием заявок на следующий вечерний киносеанс, запланированный на $дата_следующего_киносеанса в 21:00 по Москве. + Начинаем прием заявок на следующий вечерний киносеанс, запланированный на {next_movie_watching} в 21:00 по Москве. Напоминаем правила: - Мы принимаем на просмотр полнометражные художественные фильмы; @@ -30,7 +46,7 @@ def start_collect_movies_text(): - Всего может быть собрано до {limit_all_movies_poll} фильмов; - Заявки принимаются до крайнего срока, после чего будет объявлено голосование по собранным вариантам. -Крайний срок подачи заявки - $дата_дедлайна. +Крайний срок подачи заявки - {movies_accept_time}. Желаем удачи. '''.replace('\t', '')