telegram bot on aiogram to generate images with automatic1111 fast api
cp sample.env .env
create bot from BotFather and use token in API_TOKEN variable. add vk and ok tokens to env file.
заходим в https://oauth.vk.com/authorize?client_id=51626357&scope=photos&redirect_uri=http%3A%2F%2Foauth.vk.com%2Fblank.html&display=page&response_type=token
где 51626357 - номер вашего включенного приложения, созданного в https://vk.com/apps?act=manage,
photos - зона доступа.
После перехода и подтверждения выцепляем access_token из адресной строки
TODO auto requests
OK https://ok.ru/vitrine/myuploaded
Добавить приложение - https://ok.ru/app/setup
дбавить платформу - OAUTH
VALUABLE_ACCESS = Обязательно
PHOTO_CONTENT = Обязательно \ Ссылка на страницу = https://apiok.ru/oauth_callback
Список разрешённых redirect_uri = https://apiok.ru/oauth_callback
сохранить, перезайти
Ищем ID приложения справа от "Основные настройки приложения" - ID 512002358821
Открываем в браузере https://connect.ok.ru/oauth/authorize?client_id=512002358821&scope=PHOTO_CONTENT;VALUABLE_ACCESS&response_type=token&redirect_uri=https://apiok.ru/oauth_callback
С адресной строки копируем token в access_token ниже
application_key = Публичный ключ справа от "Основные настройки приложения"
Вечный access_token - Получить новый
application_secret_key = Session_secret_key \
run docker container
docker run -e VK_TOKEN='VK_TOKEN_HERE' \
-e API_BOT_TOKEN='API_BOT_TOKEN_HERE' \
-e VK_ALBUM_ID='VK_ALBUM_ID' \
-e OK_ACCESS_TOKEN='OK_ACCESS_TOKEN_HERE' \
-e OK_APPLICATION_KEY='OK_APPLICATION_KEY_HERE' \
-e OK_APPLICATION_SECRET_KEY='OK_APPLICATION_SECRET_KEY_HERE' \
-e OK_GROUP_ID='OK_GROUP_ID_HERE' \
-e SD_HOST='127.0.0.1' \
-e SD_PORT='7861' \
-e SD_USERNAME='user' \
-e SD_PASSWORD='1234' \
-e DEBUG='no' \
soaska.ru/soaska/sd_telegram:latest
run bot with python
python -m venv venv
source venv/bin/activate
pip install -m requirements.txt
python bot.py
build bot in docker
docker build -t soaska/sd_bot .
docker run soaska/sd_bot
use ; in prompt as delimiter to be divided into several separate parts, like cat;dog;car
Commands
start
_SD
__❌ = off, ✅ = on Stable Diffusion
_opt
__sttngs
___change_param
change JSON parameters
img_thumb/img_tg/img_real - little/original from tg/real size from doc
___reset_param
reset to default
___fast_param
reset to my default params
comp, mobile, no hr, big, inc, sdxl, w↔h
__scrpts
___get_lora
get list LORA`s from stable-diffusion-webui/models/Lora
___rnd_mdl
script for generating images for all models in random order, taking into account JSON settings
___rnd_smp
script for generating images for one models with all samplers
___inf
Endless script with random width, height, scale, model, sampler, steps, prompt(1. random-word-api.herokuapp.com/word?lang=en, 2.GPT2Tokenizer, 3. lexica.art/api/v1/search?q=2, 4 = 2 + 3)
If json_prompt = true then run random prompt from json
__mdl
change model from list
__smplr
change sampler from list
__hr
change hr_upscale from list
__prompt
___get
get settings in string
___random_prompt
get random prompt from GPT2Tokenizer FredZhang7 distilgpt2
___lxc_prompt
get random prompt from lexica.art (+ your prompt begin)
_gen
generate images
_skip
skip one or all generations
_help
help
If you send file, view 2 command:
_Lora
_Model
Uploading files to folders:
\models\Stable-diffusion
\models\Lora
You upload a file to Telegram, choose what it is and the file automatically goes to the folder. A forwarded message with a file also works.
Please pay attention to the file size limit in Telegram API:
sending-files
senddocument
_Chat History
We go into any Telegram chat with prompts (individual messages), click three dots in the upper right corner, upload only text messages in json format. We get the result.json file, which we throw into the bot and select "Chat History". We get a random prompt, which we can save in data
If you chose /img_real = true, the document will be unloaded for you, and after it the social network VK and OK upload button. Before that, you need to set up a token and enter the ID of the album where the photo will be sent.
TODO
- use share link (not yet possible, because the API is running in the background)
- show error in tg
- Get all files/pictures from the computer for today (preview and seeds)
- Ability to send everything with one command with settings
- Preloading photos when waiting for a long time so that you can skip
- Progress in script (done with no HR)
- Translator capable of translating up to 4000 characters and detecting the language
TNX
AUTOMATIC1111
API
aiogram
And respect for Santa 🎅
Donations are not needed. Who wants to subscribe to my generations
Lifehack`s:
If Lora dont work, see this