Телеграм бот для добавления текста (подписи) на гифку. [ Ссылка на бота ]
- Установите Python 3.11. Не забудьте поставить галочку напротив "Add Python to PATH".
- Установите пакетный менеджер Poetry и ImageMagick.
- Скачайте или склонируйте (если установлен git) этот репозиторий, после чего перейдите в него:
git clone https://github.com/AlenKimov/gif_caption_bot.git
cd gif_caption_bot
- Обновите систему, установите шрифты, git и ImageMagick:
sudo apt update && sudo apt upgrade -y
sudo apt install screen git imagemagick ttf-mscorefonts-installer -y
- Для корректной работы ImageMagick (подробнее) нужно отредактировать файл
/etc/ImageMagick-6/policy.xml
. Удалите следующую строку в конце файла:
<policy domain="path" rights="none" pattern="@*" />
Поскольку это xml, вы можете закомментировать эту строку следующим образом:
<!-- <policy domain="path" rights="none" pattern="@*" /> -->
- Установите PostgreSQL, задайте пароль учетной записи "postgres" и создайте базу данных (лучше делать это в новом терминале):
sudo apt install postgresql postgresql-contrib -y
sudo passwd postgres
sudo -i -u postgres
createdb gif_caption_bot
psql
\password
\q
- Установите Python 3.11:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.11 -y
ln -s /usr/bin/python3.11 /usr/bin/python
- Установите Poetry:
curl -sSL https://install.python-poetry.org | python -
export PATH="/root/.local/bin:$PATH"
- Склонируйте этот репозиторий, после чего перейдите в него:
git clone https://github.com/AlenKimov/gif_caption_bot.git
cd gif_caption_bot
Если значение переменной не задано, то будет задано значение по умолчанию, если такое имеется. Переменные без значения по умолчанию должны быть заданы обязательно.
- Зарегистрируйте Telegram бота через @BotFather и присвойте переменной
BOT_TOKEN
полученный токен. - (Только при использовании webhook) Задайте следующие переменные:
DOMAIN
. Домен по умолчанию: example.comWEBHOOK_BASE_PATH
. По умолчанию: webhookWEB_SERVER_HOST
. Хост по умолчанию: localhostWEB_SERVER_PORT
. Порт по умолчанию: 8080
- Задайте переменные для доступа к базе данных PostgreSQL:
POSTGRES_HOST
. Хост по умолчанию: localhostPOSTGRES_PORT
. Порт по умолчанию: 5432POSTGRES_USER
. Имя пользователя по умолчанию: postgresPOSTGRES_PASSWORD
. Пароль по умолчанию: postgresPOSTGRES_DB
. Название базы данных по умолчанию: gif_caption_bot
- Присвойте переменной
DELAY
желаемую задержку на запросы на создание анимации в секундах. Задержка по умолчанию: 30 секунд. - Присвойте переменной
MAX_WORKERS
максимальное количество процессов для обработки видео. По умолчанию: 10. - (Только для Windows) Присвойте переменной
IMAGEMAGICK_BINARY
путь до исполняемого файлаmagick.exe
(подробнее об этом).
Пример .env
файла:
BOT_TOKEN=903276830:AAFgbkhvzmQJjc1286qDdtRZ8C7aA_GzDHA
DOMAIN=https://3he5-128-78-1-120.ngrok-free.app
WEB_SERVER_HOST=localhost
WEB_SERVER_PORT=8080
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=gif_caption_bot
DELAY=30
MAX_WORKERS=10
IMAGEMAGICK_BINARY=C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe
- Следующие команды установят требуемые библиотеки и создадут таблички в базе данных:
poetry update
poetry run alembic upgrade head
- Запуск бота (поллинг):
poetry run python start.py polling --skip-updates
- Запуск бота (вебхук):
poetry run python start.py webhook
Чтобы добавить подпись на гифку, нужно отправить боту гифку, затем нужно отправить саму подпись.
/start
— Выводит приветственное сообщение с описанием возможностей бота./help
— Выводит список всех команд с описанием./me
|/my
— Выводит информацию о пользователе./repeat
|/r
|/again
- Повторяет последний запрос./settings
— Выводит информацию о настройках пользователя./leaderboard
— Выводит таблицу лидеров./font
— Выводит список доступных шрифтов и их количество. Установленный в данный момент шрифт будет отмечен в списке./font [font]
— Устанавливает указанный шрифт./font [font_size]
— Устанавливает указанный размер шрифта./font_color [color]
— Устанавливает указанный цвет шрифта./stroke
— Включает или отключает обводку./stroke_color [color]
— Устанавливает цвет обводки./position
— Меняет позицию текста на противоположную.
Пример вывода информации о пользователе с установленным именем пользователя:
Привет, @AlenKimov!
Твой Telegram ID: `0000000000`
Количество созданных гифок: 266
Настройки: /settings
Пример вывода информации о настройках пользователя:
Settings
# ┏━ Цвет шрифта
# ┃ ┏━ Размер шрифта
# ┃ ┃ ┏━ Шрифт
font: white, 10 [ Calibri ]
# ┏━ Цвет обводки (если обводка включена)
stroke: black
# ┏━ Позиция
position: bottom
Примеры таблицы лидеров:
Leaderboard
[1] 266 — @AlenKimov
[2] 059 — @AnotherUser1
[3] 057 — @AnotherUser2
[4] 056 — @AnotherUser3
[5] 042 — Another User # Имя пользователя не установлено
[6] 037 — @AnotherUser5
[7] 024 — @AnotherUser6
[8] 011 — @AnotherUser7
[9] 009 — @AnotherUser8
...
[26] 002 — [ @AnotherUser9 ]
Leaderboard
[1] 266 — [ @AlenKimov ]
[2] 059 — @AnotherUser1
[3] 057 — @AnotherUser2
[4] 056 — @AnotherUser3
[5] 042 — Another User
[6] 037 — @AnotherUser5
[7] 024 — @AnotherUser6
[8] 011 — @AnotherUser7
[9] 009 — @AnotherUser8
Бот подтягивет шрифты системы.
Пример вывода списка шрифтов:
Fonts: 7
Arial
[ Calibri ] # Этот шрифт установлен у пользователя
Candara
Comic-Sans-MS
Consolas
Constantia
Corbel
[user]
Поле | Описание |
---|---|
telegram_id (Первичный ключ) | Telegram ID |
username | Имя пользователя (username) |
first_name | Имя |
last_name | Фамилия |
animation_file_id | ID анимации |
last_gif_created_at | Дата и время последнего создания гифки |
count_of_creations | Количество созданных гифок |
last_caption | Последний запрос |
font | Шрифт |
font_size | Размер шрифта |
font_color | Цвет текста |
stroke | Выполнять обводку текста? |
stroke_color | Цвет обводки |
position | Позиция текста |