Add multiple admins support

Теперь бота может упомянуть один из нескольких админов
This commit is contained in:
localhost_frssoft 2022-09-01 22:01:24 +03:00
parent 600b022e8a
commit b5738f5ff8
2 changed files with 13 additions and 9 deletions

View File

@ -1,6 +1,7 @@
main_admin_bot = '' # Ник админа бота admins_bot = ('drq@mastodon.ml',) # Адреса админов бота, которые могут упомянуть бота для инициализации FMN
bot_acct = '' # Ник бота на инстансе # Example: ('admin_user', 'another_admin_user2@example.example') or ('admin_user',)
instance = '' # Инстанс, где будет запущен бот bot_acct = 'fmn' # Ник бота на инстансе
instance = 'expired.mentality.rip' # Инстанс, где будет запущен бот
limit_movies_per_user = 2 # Ограничение количества фильмов на одного пользователя limit_movies_per_user = 2 # Ограничение количества фильмов на одного пользователя
limit_all_movies_poll = 20 # Сколько можно добавить всего фильмов limit_all_movies_poll = 20 # Сколько можно добавить всего фильмов
hour_poll_posting=16 # Час в который будет создан пост с голосовалкой hour_poll_posting=16 # Час в который будет создан пост с голосовалкой

View File

@ -1,26 +1,29 @@
from src.fedi_api import get_notifications, mark_as_read_notification, post_status, upload_attachment from src.fedi_api import get_notifications, mark_as_read_notification, post_status, upload_attachment
from src.fmn_states_db import add_state from src.fmn_states_db import add_state, get_state
from config import main_admin_bot, limit_movies_per_user, limit_all_movies_poll, hour_poll_posting from config import admins_bot, limit_movies_per_user, limit_all_movies_poll, hour_poll_posting
import threading, time import threading, time
from datetime import datetime from datetime import datetime
from dateutil.parser import parse as dateutilparse from dateutil.parser import parse as dateutilparse
from dateutil.relativedelta import relativedelta, TU, SU 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: while True:
now_week = datetime.now().weekday() now_week = datetime.now().weekday()
if now_week not in (0, 6): if now_week not in (0, 6):
time.sleep(30) time.sleep(30)
continue continue
if get_state('last_thread_id'):
time.sleep(30)
continue
notif = get_notifications() notif = get_notifications()
for i in notif: for i in notif:
seen = i['pleroma']['is_seen'] seen = i['pleroma']['is_seen']
acct_mention = i['account']['acct'] acct_mention = i['account']['acct']
reply_to_id = i['status']['in_reply_to_id'] 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_id = i['status']['id']
st_date = i['status']['created_at'] st_date = i['status']['created_at']
thread_created_at = dateutilparse(st_date) 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 return text
def run_scan_notif(): 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() scan_notif.start()