From 93e606f1432895319640445d5ce35f9b24b962d8 Mon Sep 17 00:00:00 2001 From: vladus Date: Sat, 10 Feb 2024 23:03:34 +0300 Subject: [PATCH] add public access options and add docs to readme --- README.md | 1 + bot.py | 67 ++++++++++++++++++++++++++++------------------------- example.env | 3 ++- 3 files changed, 38 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 0545ce0..1633a30 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ docker run -e VK_TOKEN='VK_TOKEN_HERE' \ -e SD_USERNAME='user' \ -e SD_PASSWORD='1234' \ -e DEBUG='no' \ + -e ALLOWED_USERS='[id1, id2, id3]' # где id - id пользователей telegram в виде числа (пример: [1234, 5678]) без апострофов и тд, если хотите сдлеать бота общедоступным, то дайте значение '[]' soaska.ru/soaska/sd_telegram:latest ``` diff --git a/bot.py b/bot.py index f2583e1..d5c30b9 100644 --- a/bot.py +++ b/bot.py @@ -61,14 +61,17 @@ OK_APPLICATION_KEY = os.getenv('OK_APPLICATION_KEY') OK_APPLICATION_SECRET_KEY = os.getenv('OK_APPLICATION_SECRET_KEY') OK_GROUP_ID = os.getenv('OK_GROUP_ID') ARRAY_INLINE = [] -ALLOWED_USERS = json.loads(os.environ['ALLOWED_USERS']) +try: + ALLOWED_USERS = json.loads(os.getenv('ALLOWED_USERS')) +except json.decoder.JSONDecodeError: + print("Вы не ввели id в переменную ALLOWED_USERS, если вы хотите сделать бота общедоступным, то задайте ALLOW_USERS='[]'") bot = Bot(token=API_BOT_TOKEN) storage = MemoryStorage() dp = Dispatcher(bot, storage=storage) # /create_post_vk -@dp.message_handler(lambda message: message.from_user.id, commands=['create_post_vk']) +@dp.message_handler(lambda message: message.from_user.id or len(ALLOWED_USERS) == 0, commands=['create_post_vk']) async def create_post_vk(message: types.Message) -> None: result = subprocess.run( ['C:\OSPanel\modules\php\PHP_7.3\php.exe', "C:/OSPanel/domains/localhost/vk/create_post.php"], stdout=subprocess.PIPE, stderr=subprocess.PIPE @@ -592,8 +595,8 @@ async def show_thumbs(chat_id, res): # start или help @dp.callback_query_handler(text="help") -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["help"]) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["start"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["help"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["start"]) async def cmd_start(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("cmd_start") txt = "Это бот для локального запуска SD\n" + getTxt() @@ -601,7 +604,7 @@ async def cmd_start(message: Union[types.Message, types.CallbackQuery]) -> None: # TODO optimize # Запуск/Остановка SD. Завязываемся на глобальную иконку sd -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["stop"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["stop"]) @dp.callback_query_handler(text="sd") async def inl_sd(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("inl_sd") @@ -719,7 +722,7 @@ async def inl_uplora(callback: types.CallbackQuery) -> None: await callback.message.reply(f"Файл '{file_name}' загружен в {folder_path}") # Вызов reset_param, сброс JSON -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["reset_param"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["reset_param"]) @dp.callback_query_handler(text="reset_param") async def inl_reset_param(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("inl_reset_param") @@ -734,7 +737,7 @@ async def inl_reset_param(message: Union[types.Message, types.CallbackQuery]) -> await getKeyboardUnion(txt, message, keyboard, '') # Вызов fast_param, быстрые настройки -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["fast_param"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["fast_param"]) @dp.callback_query_handler(text="fast_param") async def inl_fast_param(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("inl_fast_param") @@ -742,13 +745,13 @@ async def inl_fast_param(message: Union[types.Message, types.CallbackQuery]) -> await getKeyboardUnion('Выбери быстрые настройки', message, keyboard, '') # Список быстрых настроек -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["fp_comp"]) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["fp_mobile"]) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["fp_no_hr"]) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["fp_sdxl"]) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["fp_big"]) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["fp_inc"]) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["fp_wh"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["fp_comp"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["fp_mobile"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["fp_no_hr"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["fp_sdxl"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["fp_big"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["fp_inc"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["fp_wh"]) @dp.callback_query_handler(text="fp_comp") @dp.callback_query_handler(text="fp_mobile") @dp.callback_query_handler(text="fp_no_hr") @@ -876,7 +879,7 @@ async def inl_fp(message: Union[types.Message, types.CallbackQuery]) -> None: await getKeyboardUnion(txt, message, keyboard, '') # Обработчик команды /skip -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["skip"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["skip"]) @dp.callback_query_handler(text="skip") async def inl_skip(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info('inl_skip') @@ -896,7 +899,7 @@ async def inl_skip(message: Union[types.Message, types.CallbackQuery]) -> None: reply_markup=getStart(), ) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["gen"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["gen"]) @dp.callback_query_handler(text="gen") async def inl_gen(message: Union[types.Message, types.CallbackQuery]) -> None: if hasattr(message, "content_type"): @@ -1045,7 +1048,7 @@ async def cmd_prompt(message: Union[types.Message, types.CallbackQuery]) -> None await getKeyboardUnion("Опции", message, keyboard) # Получить опции -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["opt"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["opt"]) @dp.callback_query_handler(text="opt") async def cmd_opt(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("cmd_opt") @@ -1053,7 +1056,7 @@ async def cmd_opt(message: Union[types.Message, types.CallbackQuery]) -> None: await getKeyboardUnion("Опции", message, keyboard) # Вызов sttngs -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["sttngs"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["sttngs"]) @dp.callback_query_handler(text="sttngs") async def inl_sttngs(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("inl_sttngs") @@ -1061,7 +1064,7 @@ async def inl_sttngs(message: Union[types.Message, types.CallbackQuery]) -> None await getKeyboardUnion("Настройки", message, keyboard) # Вызов script -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["scrpts"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["scrpts"]) @dp.callback_query_handler(text="scrpts") async def inl_scrpts(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("inl_scrpts") @@ -1069,7 +1072,7 @@ async def inl_scrpts(message: Union[types.Message, types.CallbackQuery]) -> None await getKeyboardUnion("Скрипты", message, keyboard) # Вызов get_models -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["mdl"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["mdl"]) @dp.callback_query_handler(text="mdl") async def inl_mdl(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("inl_mdl") @@ -1084,8 +1087,8 @@ async def inl_mdl(message: Union[types.Message, types.CallbackQuery]) -> None: await getKeyboardUnion("Turn on SD"+sd, message, keyboard) # Вызов get_samplers -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["smplr"]) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["sampler_name"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["smplr"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["sampler_name"]) @dp.callback_query_handler(text="smplr") async def inl_smplr(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("inl_smplr") @@ -1100,8 +1103,8 @@ async def inl_smplr(message: Union[types.Message, types.CallbackQuery]) -> None: await getKeyboardUnion("Turn on SD"+sd, message, keyboard) # Вызов get_hr_list -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["hr"]) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["hr_upscaler"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["hr"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["hr_upscaler"]) @dp.callback_query_handler(text="hr") async def inl_hr(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("inl_hr") @@ -1129,14 +1132,14 @@ async def inl_change_param(callback: types.CallbackQuery) -> None: ) # script random gen from models -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["rnd_mdl"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["rnd_mdl"]) @dp.callback_query_handler(text='rnd_mdl') async def inl_rnd_mdl(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info('inl_rnd_mdl') await rnd_script(message, 'models') # script random gen from models -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["rnd_smp"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["rnd_smp"]) @dp.callback_query_handler(text='rnd_smp') async def inl_rnd_smp(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info('inl_rnd_smp') @@ -1190,7 +1193,7 @@ async def inf_func(chatId): ) # script random infinity gen from https://random-word-api.herokuapp.com/word?lang=en -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["inf"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["inf"]) @dp.callback_query_handler(text='inf') async def inl_rnd_inf(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info('inl_rnd_inf') @@ -1229,7 +1232,7 @@ async def inl_rnd_inf(message: Union[types.Message, types.CallbackQuery]) -> Non await inf_func(chatId) # Получить LORA -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["get_lora"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["get_lora"]) @dp.callback_query_handler(text="get_lora") async def getLora(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("getLora") @@ -1253,7 +1256,7 @@ async def getLora(message: Union[types.Message, types.CallbackQuery]) -> None: await getKeyboardUnion(arr, message, keyboard) # Рандомный промпт с lexica.art на основе data['prompt'] -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, commands=["lxc_prompt"]) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, commands=["lxc_prompt"]) @dp.callback_query_handler(text="lxc_prompt") async def get_lxc_prompt(message: Union[types.Message, types.CallbackQuery]) -> None: logging.info("get_lxc_prompt") @@ -1353,7 +1356,7 @@ async def handle_channel_post(message: types.Message): ) # Ввели любой текст -@dp.message_handler(lambda message: True and message.from_user.id in ALLOWED_USERS) +@dp.message_handler(lambda message: True and (message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0)) async def change_json(message: types.Message): logging.info("change_json") keyboard = InlineKeyboardMarkup(inline_keyboard=[getSet(0), getOpt(0), getStart(0)]) @@ -1410,7 +1413,7 @@ async def change_json(message: types.Message): ) # Ввели ответ на change_json -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, state=Form) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, state=Form) async def answer_handler(message: types.Message, state: FSMContext): logging.info('answer_handler') keyboard = InlineKeyboardMarkup(inline_keyboard=[getSet(0), getOpt(0), getStart(0)]) @@ -1433,7 +1436,7 @@ async def answer_handler(message: types.Message, state: FSMContext): f"JSON параметры:\n{getJson()}\n{getJson(1)}", reply_markup=keyboard ) -@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS, content_types=['document']) +@dp.message_handler(lambda message: message.from_user.id in ALLOWED_USERS or len(ALLOWED_USERS) == 0, content_types=['document']) async def handle_file(message: types.Message): logging.info('handle_file') diff --git a/example.env b/example.env index 9d92a4a..fce50d8 100644 --- a/example.env +++ b/example.env @@ -11,4 +11,5 @@ SD_USERNAME = 'user' SD_PASSWORD = '1234' DEBUG = 'no' # 'yes' to debug # ids are type int -ALLOWED_USERS = '[id1, id2, idN]' # must not be empty, at least one value #TODO need to handle this \ No newline at end of file +#ALLOWED_USERS = '[id1, id2, idN]' +ALLOWED_USERS = '[]' \ No newline at end of file