add public access options and add docs to readme

This commit is contained in:
vladus 2024-02-10 23:03:34 +03:00
parent d1e37f9c4a
commit 93e606f143
3 changed files with 38 additions and 33 deletions

View File

@ -42,6 +42,7 @@ docker run -e VK_TOKEN='VK_TOKEN_HERE' \
-e SD_USERNAME='user' \ -e SD_USERNAME='user' \
-e SD_PASSWORD='1234' \ -e SD_PASSWORD='1234' \
-e DEBUG='no' \ -e DEBUG='no' \
-e ALLOWED_USERS='[id1, id2, id3]' # где id - id пользователей telegram в виде числа (пример: [1234, 5678]) без апострофов и тд, если хотите сдлеать бота общедоступным, то дайте значение '[]'
soaska.ru/soaska/sd_telegram:latest soaska.ru/soaska/sd_telegram:latest
``` ```

67
bot.py
View File

@ -61,14 +61,17 @@ OK_APPLICATION_KEY = os.getenv('OK_APPLICATION_KEY')
OK_APPLICATION_SECRET_KEY = os.getenv('OK_APPLICATION_SECRET_KEY') OK_APPLICATION_SECRET_KEY = os.getenv('OK_APPLICATION_SECRET_KEY')
OK_GROUP_ID = os.getenv('OK_GROUP_ID') OK_GROUP_ID = os.getenv('OK_GROUP_ID')
ARRAY_INLINE = [] 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) bot = Bot(token=API_BOT_TOKEN)
storage = MemoryStorage() storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage) dp = Dispatcher(bot, storage=storage)
# /create_post_vk # /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: async def create_post_vk(message: types.Message) -> None:
result = subprocess.run( 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 ['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 # start или help
@dp.callback_query_handler(text="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 or len(ALLOWED_USERS) == 0, 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=["start"])
async def cmd_start(message: Union[types.Message, types.CallbackQuery]) -> None: async def cmd_start(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("cmd_start") logging.info("cmd_start")
txt = "Это бот для локального запуска SD\n" + getTxt() txt = "Это бот для локального запуска SD\n" + getTxt()
@ -601,7 +604,7 @@ async def cmd_start(message: Union[types.Message, types.CallbackQuery]) -> None:
# TODO optimize # TODO optimize
# Запуск/Остановка SD. Завязываемся на глобальную иконку sd # Запуск/Остановка 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") @dp.callback_query_handler(text="sd")
async def inl_sd(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_sd(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("inl_sd") 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}") await callback.message.reply(f"Файл '{file_name}' загружен в {folder_path}")
# Вызов reset_param, сброс JSON # Вызов 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") @dp.callback_query_handler(text="reset_param")
async def inl_reset_param(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_reset_param(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("inl_reset_param") 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, '') await getKeyboardUnion(txt, message, keyboard, '')
# Вызов fast_param, быстрые настройки # Вызов 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") @dp.callback_query_handler(text="fast_param")
async def inl_fast_param(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_fast_param(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("inl_fast_param") logging.info("inl_fast_param")
@ -742,13 +745,13 @@ async def inl_fast_param(message: Union[types.Message, types.CallbackQuery]) ->
await getKeyboardUnion('Выбери быстрые настройки', message, keyboard, '') 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 or len(ALLOWED_USERS) == 0, 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 or len(ALLOWED_USERS) == 0, 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 or len(ALLOWED_USERS) == 0, 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 or len(ALLOWED_USERS) == 0, 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 or len(ALLOWED_USERS) == 0, 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 or len(ALLOWED_USERS) == 0, 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_wh"])
@dp.callback_query_handler(text="fp_comp") @dp.callback_query_handler(text="fp_comp")
@dp.callback_query_handler(text="fp_mobile") @dp.callback_query_handler(text="fp_mobile")
@dp.callback_query_handler(text="fp_no_hr") @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, '') await getKeyboardUnion(txt, message, keyboard, '')
# Обработчик команды /skip # Обработчик команды /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") @dp.callback_query_handler(text="skip")
async def inl_skip(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_skip(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info('inl_skip') logging.info('inl_skip')
@ -896,7 +899,7 @@ async def inl_skip(message: Union[types.Message, types.CallbackQuery]) -> None:
reply_markup=getStart(), 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") @dp.callback_query_handler(text="gen")
async def inl_gen(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_gen(message: Union[types.Message, types.CallbackQuery]) -> None:
if hasattr(message, "content_type"): if hasattr(message, "content_type"):
@ -1045,7 +1048,7 @@ async def cmd_prompt(message: Union[types.Message, types.CallbackQuery]) -> None
await getKeyboardUnion("Опции", message, keyboard) 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") @dp.callback_query_handler(text="opt")
async def cmd_opt(message: Union[types.Message, types.CallbackQuery]) -> None: async def cmd_opt(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("cmd_opt") logging.info("cmd_opt")
@ -1053,7 +1056,7 @@ async def cmd_opt(message: Union[types.Message, types.CallbackQuery]) -> None:
await getKeyboardUnion("Опции", message, keyboard) await getKeyboardUnion("Опции", message, keyboard)
# Вызов sttngs # Вызов 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") @dp.callback_query_handler(text="sttngs")
async def inl_sttngs(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_sttngs(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("inl_sttngs") logging.info("inl_sttngs")
@ -1061,7 +1064,7 @@ async def inl_sttngs(message: Union[types.Message, types.CallbackQuery]) -> None
await getKeyboardUnion("Настройки", message, keyboard) await getKeyboardUnion("Настройки", message, keyboard)
# Вызов script # Вызов 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") @dp.callback_query_handler(text="scrpts")
async def inl_scrpts(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_scrpts(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("inl_scrpts") logging.info("inl_scrpts")
@ -1069,7 +1072,7 @@ async def inl_scrpts(message: Union[types.Message, types.CallbackQuery]) -> None
await getKeyboardUnion("Скрипты", message, keyboard) await getKeyboardUnion("Скрипты", message, keyboard)
# Вызов get_models # Вызов 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") @dp.callback_query_handler(text="mdl")
async def inl_mdl(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_mdl(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("inl_mdl") 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) await getKeyboardUnion("Turn on SD"+sd, message, keyboard)
# Вызов get_samplers # Вызов 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 or len(ALLOWED_USERS) == 0, 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=["sampler_name"])
@dp.callback_query_handler(text="smplr") @dp.callback_query_handler(text="smplr")
async def inl_smplr(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_smplr(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("inl_smplr") 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) await getKeyboardUnion("Turn on SD"+sd, message, keyboard)
# Вызов get_hr_list # Вызов 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 or len(ALLOWED_USERS) == 0, 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_upscaler"])
@dp.callback_query_handler(text="hr") @dp.callback_query_handler(text="hr")
async def inl_hr(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_hr(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("inl_hr") logging.info("inl_hr")
@ -1129,14 +1132,14 @@ async def inl_change_param(callback: types.CallbackQuery) -> None:
) )
# script random gen from models # 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') @dp.callback_query_handler(text='rnd_mdl')
async def inl_rnd_mdl(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_rnd_mdl(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info('inl_rnd_mdl') logging.info('inl_rnd_mdl')
await rnd_script(message, 'models') await rnd_script(message, 'models')
# script random gen from 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') @dp.callback_query_handler(text='rnd_smp')
async def inl_rnd_smp(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_rnd_smp(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info('inl_rnd_smp') 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 # 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') @dp.callback_query_handler(text='inf')
async def inl_rnd_inf(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_rnd_inf(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info('inl_rnd_inf') 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) await inf_func(chatId)
# Получить LORA # Получить 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") @dp.callback_query_handler(text="get_lora")
async def getLora(message: Union[types.Message, types.CallbackQuery]) -> None: async def getLora(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("getLora") logging.info("getLora")
@ -1253,7 +1256,7 @@ async def getLora(message: Union[types.Message, types.CallbackQuery]) -> None:
await getKeyboardUnion(arr, message, keyboard) await getKeyboardUnion(arr, message, keyboard)
# Рандомный промпт с lexica.art на основе data['prompt'] # Рандомный промпт с 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") @dp.callback_query_handler(text="lxc_prompt")
async def get_lxc_prompt(message: Union[types.Message, types.CallbackQuery]) -> None: async def get_lxc_prompt(message: Union[types.Message, types.CallbackQuery]) -> None:
logging.info("get_lxc_prompt") 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): async def change_json(message: types.Message):
logging.info("change_json") logging.info("change_json")
keyboard = InlineKeyboardMarkup(inline_keyboard=[getSet(0), getOpt(0), getStart(0)]) keyboard = InlineKeyboardMarkup(inline_keyboard=[getSet(0), getOpt(0), getStart(0)])
@ -1410,7 +1413,7 @@ async def change_json(message: types.Message):
) )
# Ввели ответ на change_json # Ввели ответ на 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): async def answer_handler(message: types.Message, state: FSMContext):
logging.info('answer_handler') logging.info('answer_handler')
keyboard = InlineKeyboardMarkup(inline_keyboard=[getSet(0), getOpt(0), getStart(0)]) 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 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): async def handle_file(message: types.Message):
logging.info('handle_file') logging.info('handle_file')

View File

@ -11,4 +11,5 @@ SD_USERNAME = 'user'
SD_PASSWORD = '1234' SD_PASSWORD = '1234'
DEBUG = 'no' # 'yes' to debug DEBUG = 'no' # 'yes' to debug
# ids are type int # ids are type int
ALLOWED_USERS = '[id1, id2, idN]' # must not be empty, at least one value #TODO need to handle this #ALLOWED_USERS = '[id1, id2, idN]'
ALLOWED_USERS = '[]'