# This file is part of python-cinema-club-bot # contributed in 2024 by Mikhail Kirillov (~w96k) # To the extent possible under law, the author(s) have dedicated all copyright # and related and neighboring rights to this software to the public domain # worldwide. This software is distributed without any warranty. # You should have received a copy of the CC0 Public Domain Dedication along # with this software. If not, see: # from telegram.ext import ContextTypes from collections import deque from typing import Optional def context_init(context: ContextTypes.DEFAULT_TYPE): """ Initialize chat context with starting values """ if "users" not in context.chat_data: context.chat_data["users"]: list[str] = [] if "movies" not in context.chat_data: context.chat_data["movies"]: list[dict] = [] if "events" not in context.chat_data: context.chat_data["events"]: list[dict] = [] return context def normalize_username(username: str): return username.replace("@", "") def create_users_string(users: list[str]) -> str: return "`" + ", ".join(users) + "`" def choose_next_user(context: ContextTypes.DEFAULT_TYPE) -> list[dict]: users = deque(context.chat_data["users"]) users.rotate(-1) # -1 moves list to left by 1 element init_new_event(context, users[0]) return list(users) def init_new_event(context: ContextTypes.DEFAULT_TYPE, user: dict, movie: Optional[str] = None): events = context.chat_data["events"] last_event = events[-1] if events != [] else None init_event = dict( when=None, where=None, movie=movie, user=user ) if last_event and last_event["movie"] is None: events[-1] = init_event else: events.append(init_event)