def daily_midnight(bot: telegram.Bot, _): # особый режим сегодняшнего дня DayOfManager.midnight(bot) # для каждого чата for chat in get_config_chats(): if 'daily_full_moon_check' in chat.enabled_commands: send_alert_if_full_moon(bot, chat.chat_id) for chat in get_config_chats(): if is_command_enabled_for_chat(chat.chat_id, 'weeklystat'): ReplyDumper.dump(chat.chat_id)
def send_to_all_chats(bot: telegram.Bot, key_name: str, get_text: Callable[[int], str]) -> None: for chat in get_config_chats(): chat_id = chat.chat_id chat_key = f'{CACHE_PREFIX}:{key_name}:{chat_id}' if cache.get(chat_key, False): continue dsp(send_html, bot, chat_id, get_text(chat_id)) cache.set(chat_key, True, time=TWO_DAYS)
def check(cls, bot: telegram.Bot) -> None: for chat in get_config_chats(): # это нужно только для супергрупп, поэтому сперва проверяем, супергруппа ли это if not cls.__is_supergroup(bot, chat.chat_id): continue # проверяем, не кикнули ли нас из этой супергруппы if not cls.__is_we_still_in_chat(bot, chat.chat_id): continue # используем данные ктоливнулыча LeaveCollector.update_ktolivnul(chat.chat_id)
def weekly_stats(bot: telegram.Bot, _) -> None: today = datetime.today() # эта штука запускается в понедельник ночью, поэтому мы откладываем неделю назад prev_monday = (today - timedelta(days=today.weekday() + 7)).replace( hour=0, minute=0, second=0, microsecond=0) for chat in config.get_config_chats(): if not is_command_enabled_for_chat(chat.chat_id, 'weeklystat'): continue send_weekly_for_chat(bot, chat.chat_id, chat.disabled_commands, chat.enabled_commands, prev_monday)
def new_year(bot: telegram.Bot): if datetime.today().strftime("%m-%d") != '01-01': return for chat in get_config_chats(): dsp(_send_new_year, bot, chat.chat_id)