# 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 import Update, error from telegram.ext import ContextTypes from collections import deque from strings import USER_NOT_PROVIDED, USER_ADDED, USER_REMOVED, EXPECTED_ONE_USER from utils import context_init from rich import inspect async def add_users( update: Update, context: ContextTypes.DEFAULT_TYPE ) -> None: context_init(context) if context.args == []: await update.message.reply_text(USER_NOT_PROVIDED) raise error.TelegramError(USER_NOT_PROVIDED) for user in context.args: context.chat_data["users"].append(user) await update.message.reply_text(USER_ADDED.format(user=user)) await update.message.reply_text(context.chat_data["users"]) async def list_users( update: Update, context: ContextTypes.DEFAULT_TYPE ) -> None: context_init(context) await update.message.reply_text(context.chat_data["users"]) async def remove_users( update: Update, context: ContextTypes.DEFAULT_TYPE ) -> None: context_init(context) if context.args == []: await update.message.reply_text(USER_NOT_PROVIDED) raise error.TelegramError(USER_NOT_PROVIDED) for user in context.args: if user == "*": context.chat_data["users"] = [] break context.chat_data["users"].remove(user) await update.message.reply_text(USER_REMOVED.format(user=user)) await update.message.reply_text(context.chat_data["users"]) async def chooser_user( update: Update, context: ContextTypes.DEFAULT_TYPE ) -> None: context_init(context) if context.args == []: await update.message.reply_text(USER_NOT_PROVIDED) raise error.TelegramError(USER_NOT_PROVIDED) if len(context.args) > 1: await update.message.reply_text(EXPECTED_ONE_USER) raise error.TelegramError(EXPECTED_ONE_USER) chooser = context.args[0] users = deque(context.chat_data["users"]) chooser_index = users.index(chooser) users.rotate(-chooser_index) context.chat_data["users"] = list(users) await update.message.reply_text(context.chat_data)