From b5738f5ff8b3e4df50e9ebf153ffe0899936a2e8 Mon Sep 17 00:00:00 2001 From: localhost_frssoft Date: Thu, 1 Sep 2022 22:01:24 +0300 Subject: [PATCH] Add multiple admins support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Теперь бота может упомянуть один из нескольких админов --- config.py | 7 ++++--- src/listener_mention.py | 15 +++++++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/config.py b/config.py index 5696c47..e32537d 100644 --- a/config.py +++ b/config.py @@ -1,6 +1,7 @@ -main_admin_bot = '' # Ник админа бота -bot_acct = '' # Ник бота на инстансе -instance = '' # Инстанс, где будет запущен бот +admins_bot = ('drq@mastodon.ml',) # Адреса админов бота, которые могут упомянуть бота для инициализации FMN +# Example: ('admin_user', 'another_admin_user2@example.example') or ('admin_user',) +bot_acct = 'fmn' # Ник бота на инстансе +instance = 'expired.mentality.rip' # Инстанс, где будет запущен бот limit_movies_per_user = 2 # Ограничение количества фильмов на одного пользователя limit_all_movies_poll = 20 # Сколько можно добавить всего фильмов hour_poll_posting=16 # Час в который будет создан пост с голосовалкой diff --git a/src/listener_mention.py b/src/listener_mention.py index b2fbe85..b4fae96 100644 --- a/src/listener_mention.py +++ b/src/listener_mention.py @@ -1,26 +1,29 @@ from src.fedi_api import get_notifications, mark_as_read_notification, post_status, upload_attachment -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 +from src.fmn_states_db import add_state, get_state +from config import admins_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 -def get_control_mention(acct_admin_bot=str): +def get_control_mention(): while True: now_week = datetime.now().weekday() if now_week not in (0, 6): time.sleep(30) continue + if get_state('last_thread_id'): + time.sleep(30) + continue + notif = get_notifications() for i in notif: seen = i['pleroma']['is_seen'] acct_mention = i['account']['acct'] reply_to_id = i['status']['in_reply_to_id'] - if acct_mention == acct_admin_bot and seen == False and reply_to_id == None and now_week in (0, 6): + if acct_mention in admins_bot and seen == False and reply_to_id == None and now_week in (0, 6): st_id = i['status']['id'] st_date = i['status']['created_at'] thread_created_at = dateutilparse(st_date) @@ -60,6 +63,6 @@ def start_collect_movies_text(movies_accept_time=str, next_movie_watching=str): return text def run_scan_notif(): - scan_notif = threading.Thread(target=get_control_mention, args=(acct_admin_bot,), daemon=True) + scan_notif = threading.Thread(target=get_control_mention, daemon=True) scan_notif.start()