chsnge samplers

change models
This commit is contained in:
Mikhail Guseletov 2023-06-20 13:25:03 +07:00
parent 0265ccda64
commit 9da8fa3eb4

67
bot.py
View File

@ -57,6 +57,7 @@ sd = "❌"
data = getAttrtxt2img() data = getAttrtxt2img()
data['prompt'] = 'cat in space' # Ý data['prompt'] = 'cat in space' # Ý
data['steps'] = 15 data['steps'] = 15
data['sampler_name'] = 'Euler a'
dataParams = {"img_thumb": "true", "img_tg": "true", "img_real": "true"} dataParams = {"img_thumb": "true", "img_tg": "true", "img_real": "true"}
dataOld = data.copy() dataOld = data.copy()
dataOldParams = dataParams.copy() dataOldParams = dataParams.copy()
@ -187,7 +188,7 @@ async def getProgress(msgTime):
await bot.edit_message_text( await bot.edit_message_text(
chat_id=msgTime.chat.id, chat_id=msgTime.chat.id,
message_id=msgTime.message_id, message_id=msgTime.message_id,
text=str(proc)+'% ' + points text=str(proc)+'% ' + points# + str(int(time.time() * 1000))
) )
# -------- MENU ---------- # -------- MENU ----------
@ -202,7 +203,7 @@ def getKeyboard(keysArr, returnAll):
# Стандартное меню # Стандартное меню
async def getKeyboardUnion(txt, message, keyboard, parse_mode = 'Markdown'): async def getKeyboardUnion(txt, message, keyboard, parse_mode = 'Markdown'):
# Если команда /settings # Если команда с слешем
if hasattr(message, "content_type"): if hasattr(message, "content_type"):
await bot.send_message( await bot.send_message(
chat_id=message.from_user.id, chat_id=message.from_user.id,
@ -232,9 +233,10 @@ def getStart(returnAll=1) -> InlineKeyboardMarkup:
# Меню опций # Меню опций
def getOpt(returnAll=1) -> InlineKeyboardMarkup: def getOpt(returnAll=1) -> InlineKeyboardMarkup:
keysArr = [ keysArr = [
InlineKeyboardButton("settings", callback_data="settings"), InlineKeyboardButton("sttngs", callback_data="sttngs"),
InlineKeyboardButton("scripts", callback_data="scripts"), InlineKeyboardButton("scripts", callback_data="scripts"),
InlineKeyboardButton("mdl", callback_data="mdl"), InlineKeyboardButton("mdl", callback_data="mdl"),
InlineKeyboardButton("smplr", callback_data="smplr"),
InlineKeyboardButton("prompt", callback_data="prompt"), InlineKeyboardButton("prompt", callback_data="prompt"),
] ]
return (getKeyboard(keysArr, returnAll)) return (getKeyboard(keysArr, returnAll))
@ -268,23 +270,30 @@ def getPrompt(returnAll=1) -> InlineKeyboardMarkup:
def getTxt(): def getTxt():
return "/start /opt /gen /skip /help" return "/start /opt /gen /skip /help"
# get all models from stable-diffusion-webui\models\Stable-diffusion def set_array(arrAll, itemArr, callback_data):
def get_models():
models = api.get_sd_models()
arr = [] arr = []
arr2 = [] arr2 = []
i = 1 i = 1
for item in models: for item in arrAll:
arr.append(InlineKeyboardButton(item['model_name'], callback_data='models|'+item['model_name'])) arr.append(InlineKeyboardButton(item[itemArr], callback_data=callback_data+'|'+item[itemArr]))
if i % 3 == 0: if i % 3 == 0:
arr2.append(arr) arr2.append(arr)
arr = [] arr = []
i += 1 i += 1
if arr != []: if arr != []:
arr2.append(arr) arr2.append(arr)
print(arr2)
return arr2 return arr2
# get all models from stable-diffusion-webui\models\Stable-diffusion
def get_models():
models = api.get_sd_models()
return set_array(models, 'model_name', 'models')
# get samplers
def get_samplers_list():
samplers = api.get_samplers()
return set_array(samplers, 'name', 'samplers')
# -------- COMMANDS ---------- # -------- COMMANDS ----------
# start или help # start или help
@ -389,6 +398,7 @@ async def inl_gen(message: Union[types.Message, types.CallbackQuery]) -> None:
# Включаем асинхрон, чтоб заработал await api.txt2img # Включаем асинхрон, чтоб заработал await api.txt2img
data["use_async"] = "True" data["use_async"] = "True"
asyncio.create_task(getProgress(msgTime)) asyncio.create_task(getProgress(msgTime))
# TODO try catch if wrong data
res = await api.txt2img(**data) res = await api.txt2img(**data)
if dataParams["img_thumb"] == "true" or dataParams["img_thumb"] == "True": if dataParams["img_thumb"] == "true" or dataParams["img_thumb"] == "True":
await bot.send_media_group( await bot.send_media_group(
@ -426,11 +436,11 @@ async def cmd_opt(message: Union[types.Message, types.CallbackQuery]) -> None:
keyboard = InlineKeyboardMarkup(inline_keyboard=[getOpt(0), getStart(0)]) keyboard = InlineKeyboardMarkup(inline_keyboard=[getOpt(0), getStart(0)])
await getKeyboardUnion("Опции", message, keyboard) await getKeyboardUnion("Опции", message, keyboard)
# Вызов settings # Вызов sttngs
@dp.message_handler(commands=["settings"]) @dp.message_handler(commands=["sttngs"])
@dp.callback_query_handler(text="settings") @dp.callback_query_handler(text="sttngs")
async def inl_settings(message: Union[types.Message, types.CallbackQuery]) -> None: async def inl_sttngs(message: Union[types.Message, types.CallbackQuery]) -> None:
print("inl_settings") print("inl_sttngs")
keyboard = InlineKeyboardMarkup(inline_keyboard=[getSet(0), getOpt(0), getStart(0)]) keyboard = InlineKeyboardMarkup(inline_keyboard=[getSet(0), getOpt(0), getStart(0)])
await getKeyboardUnion("Настройки", message, keyboard) await getKeyboardUnion("Настройки", message, keyboard)
@ -457,6 +467,21 @@ async def inl_mdl(message: Union[types.Message, types.CallbackQuery]) -> None:
keyboard = InlineKeyboardMarkup(inline_keyboard=[getOpt(0), getStart(0)]) keyboard = InlineKeyboardMarkup(inline_keyboard=[getOpt(0), getStart(0)])
await getKeyboardUnion("Turn on SD"+sd, message, keyboard) await getKeyboardUnion("Turn on SD"+sd, message, keyboard)
# Вызов get_samplers
@dp.message_handler(commands=["smplr"])
@dp.callback_query_handler(text="smplr")
async def inl_smplr(message: Union[types.Message, types.CallbackQuery]) -> None:
print("inl_smplr")
global sd
if sd == '':
menu = get_samplers_list()
menu.append(getOpt(0))
menu.append(getStart(0))
await getKeyboardUnion("Скрипты", message, InlineKeyboardMarkup(inline_keyboard=menu))
else:
keyboard = InlineKeyboardMarkup(inline_keyboard=[getOpt(0), getStart(0)])
await getKeyboardUnion("Turn on SD"+sd, message, keyboard)
# Вызов change_param # Вызов change_param
@dp.callback_query_handler(text="change_param") @dp.callback_query_handler(text="change_param")
async def inl_change_param(callback: types.CallbackQuery) -> None: async def inl_change_param(callback: types.CallbackQuery) -> None:
@ -579,6 +604,20 @@ async def inl_models(callback: types.CallbackQuery) -> None:
menu.append(getStart(0)) menu.append(getStart(0))
await getKeyboardUnion('Теперь модель = ' + str(mdl), callback, InlineKeyboardMarkup(inline_keyboard=menu), '') await getKeyboardUnion('Теперь модель = ' + str(mdl), callback, InlineKeyboardMarkup(inline_keyboard=menu), '')
# тыкнули на сэмплер
@dp.callback_query_handler(text_startswith="samplers")
async def inl_samplers(callback: types.CallbackQuery) -> None:
print('inl_samplers')
smplr = callback.data.split("|")[1]
options = {}
options['sampler_name'] = smplr
api.set_options(options)
data['sampler_name'] = smplr # Ý
menu = get_samplers_list()
menu.append(getOpt(0))
menu.append(getStart(0))
await getKeyboardUnion('Теперь сэмплер = ' + str(smplr), callback, InlineKeyboardMarkup(inline_keyboard=menu), '')
# Ввели любой текст # Ввели любой текст
@dp.message_handler(lambda message: True) @dp.message_handler(lambda message: True)
async def change_json(message: types.Message): async def change_json(message: types.Message):