- Аудио: запись произношения (MP3) недоступна для всех слов. В некоторых случаях бот не способен найти аудио или скачать его.
- Частота запросов: слишком интенсивный парсинг может привести к блокировке IP-адреса. В скрипте реализованы задержки между запросами для снижения риска блокировки.
- Качество перевода: переводы и примеры предложений формируются автоматизированным сервисом. По этой причине могут возникнуть стилистические неточности.
- Определение частей речи: алгоритм иногда ошибается при работе с многозначными словами или сложными грамматическими случаями.
- Размер сообщений: одно сообщение (включая текст и примеры предложений) не должно превышать 4096 символов.
- Размер аудиофайлов: загружаемые MP3-файлы не должны превышать 50 МБ (ограничение Telegram API).
- Поддерживаемые части речи: бот обрабатывает только существительные (noun), глаголы (verb) и прилагательные (adjective). Остальные части речи определяются как unidentified.
- Спецсимволы: в словах недопустимы следующие символы:
<, >, :, ", /, \, |, ?, *. При создании имени аудиофайла они автоматически удаляются. - Регистр букв: регистр не играет роли при вводе слов для добавления или удаления (все слова приводятся к нижнему регистру).
- После подключения к чат-боту Telegram нажимается кнопка
Start - Отгадывается правильный перевод английского слова
- При выборе неправильного варианта ответа появляется крестик
- При выборе корректного варианта ответа появляется сообщение о верном ответе
- Для продолжения викторины нажимается клавиша "Дальше"
- После нажатия на клавишу "Добавить слово" чат-бот попросит пользователя ввести английское слово, которое необходимо добавить в базу данных (БД)
- Ввод команд "Дальше", "Добавить слово", "Удалить слово" невозможен после выбора команды "Добавить слово"
- При добавлении существующего английского слова чат-бот сообщит о его наличии в БД
- При вводе нового английского слова, существующего в БД онлайн-словарей (Oxford, Promt.One), чат-бот автоматически добавит его в БД пользователя Telegram
- При вводе нового английского слова, отсутствующего в БД онлайн-словарей, чат-бот попросит пользователя ввести перевод английского слова
- В случае ввода слова на некорректном языке (русский вместо английского или наоборот) Telegram-бот попросит нажать на кнопку «Добавить слово» и повторить попытку
- Для удаления английского слова из БД пользователя Telegram необходимо нажать на клавишу "Удалить слово"
- Непредусмотренное нажатие клавиш, содержащих команды "Дальше", "Добавить слово" и "Удалить слово", приведет к невозможности обработки их чат-ботом
- При отсутствии английского слова в БД пользователя Telegram чат-бот известит его о невозможности выполнить запрошенную операцию
- При наличии введенного английского слова в БД пользователя Telegram-бот его удалит
- При вводе русского слова вместо английского чат-бот попросит пользователя Telegram нажать на клавишу "Удалить слово" и повторить попытку
- Клонирование репозитория:
git clone https://github.com/maxter9595/EngStudyBot.git
cd EngStudyBot-
Документация по Telegram Bot API: https://core.telegram.org/bots/api
-
Указание переменных окружения с учетом валидного Telegram-токена:
# 7...O4 - Telegram-токен, заменяющий фразу "your_token"
bash -c "cp .env_example .env && sed -i 's/your_token/7...O4/g' .env"-
Запуск Docker Desktop. Его наличие необходимо для запуска Docker-контейнеров
-
Сборка и запуск Docker:
docker compose build
docker compose up -d- Проверка наличия Docker-контейнеров и запуск тестирования функционала приложения:
docker-compose ps
docker-compose run test-
Ссылка для подключения: http://localhost:5050/
-
Данные администратора БД для входа в административную панель PostgreSQL:
Почта: admin@example.com
Пароль: admin123
Register...➝Server.... Данные соединения:
Host: db
Port: 5432
Maintenance database: EngStudyBot
Username: postgres
Password: postgres
- Проверка работы Telegram-бота
-
Рег.RU - Облачный сервер с предустановленным Docker: https://www.reg.ru/cloud/docker
-
Пример IP-адреса и информация о сервере для покупки:
- IP-адрес: 91.197.99.158
- Предустановленный Docker: да
- Образ: Ubuntu
- Тарифы и конфигурации: производительный
- Тариф: HP C2-M2-D40
- Регион размещения: Москва
- Плавающий (публичный) IP-адрес: да
- Резервное копирование: да
- Вход на сервер после его приобретения:
ssh root@91.197.99.158- Создание пользователя и добавление его в группу sudo:
adduser myappuser
usermod -aG sudo myappuser- Установка зависимостей:
apt update && apt upgrade -y
apt install -y git nginx ufw- Настройка firewall:
sudo ufw allow 5432
sudo ufw allow 5050
sudo ufw allow 22
ufw allow 80
ufw enable- Запуск Docker:
# На выбранном сервере Docker уже предустановлен
systemctl enable docker
systemctl start docker- Добавление пользователя в группу docker и его переподключение на сервер для утверждения прав:
usermod -aG docker myappuser
exit
# Вход по паролю, заданному пользователю через adduser myappuser
ssh myappuser@91.197.99.158- Клонирование репозитория:
git clone https://github.com/maxter9595/EngStudyBot.git
cd EngStudyBot- Указание переменных окружения с учетом валидного Telegram-токена:
# 7...O4 - Telegram-токен, заменяющий фразу "your_token"
cp .env_example .env && sed -i "s/your_token/7...O4/g" .env- Сборка и запуск Docker:
cd ~/MyCloudApp
docker compose build
docker compose up -d- Проверка наличия Docker контейнеров и запуск тестов:
docker compose ps
docker compose run test-
Админка PostgreSQL (через PGAdmin): http://91.197.99.158:5050/
-
Данные администратора БД для входа в административную панель СУБД PostgreSQL:
Почта: admin@example.com
Пароль: admin123
Register...➝Server.... Данные соединения к БД в СУБД PostgreSQL:
Host: db
Port: 5432
Maintenance database: EngStudyBot
Username: postgres
Password: postgres
- Проверка работы Telegram-бота
- Генерация SSH-ключа на локальном ПК:
ssh-keygen -t ed25519 -C "max.t95@bk.ru"- Вывод SSH-ключа из локального ПК для копирования:
type $env:USERPROFILE\.ssh\id_ed25519.pub# Копируем SSH-ключ
ssh-ed25519 AAAA...g5 max.t95@bk.ru- Вход на сервер:
ssh myappuser@91.197.99.158- Генерация SSH-ключа на сервере:
ssh-keygen -t ed25519 -C "max.t95@bk.ru"- Вывод SSH-ключа из сервера для просмотра:
ssh-keygen -y -f ~/.ssh/id_ed25519# SSH-ключ из сервера понадобится для удаленного подключения к GitHub
ssh-ed25519 AAAA...hc max.t95@bk.ru- Ввод SSH-ключа из сервера в список авторизированных ключей:
ssh-keygen -y -f ~/.ssh/id_ed25519 >> ~/.ssh/authorized_keys- Ввод SSH-ключа из локального ПК в список авторизированных ключей:
echo "ssh-ed25519 AAAA...g5 max.t95@bk.ru" >> ~/.ssh/authorized_keys- Просмотр списка авторизированных ключей:
cat ~/.ssh/authorized_keys# В результате должно быть два SSH-ключа в списке авторизованных ключей
ssh-ed25519 AAAA...hc max.t95@bk.ru
ssh-ed25519 AAAA...g5 max.t95@bk.ru- Настройка прав для authorized_keys:
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh- Вход в visudo и добавление параметров для обхода паролей пользователя при деплое:
sudo visudo# Добавляем в конце файла следующее:
myappuser ALL=(ALL) NOPASSWD: ALL- Выход из сервера и проверка входа на сервер без пароля:
exit
ssh myappuser@91.197.99.158
# Если всё ок — войдём без пароля- Вывод публичного SSH-ключа для интеграции с GitHub:
cat ~/.ssh/id_ed25519.pub# Копируем все, что будет выведено
ssh-ed25519 AAAA...hc max.t95@bk.ru-
Привязка публичного ключа к GitHub:
-
Сайт GitHub→Settings→SSH and GPG keys→New SSH key. Заполняем параметры SHH-ключа:-
Тип ключа:
Authentication Key -
Имя ключа:
VM-server -
В поле
Keyдобавляем содержимое SSH-ключа. Пример -ssh-ed25519 AAAA...hc max.t95@bk.ru
-
-
После добавления параметров SSH-ключа нажимаем
Add SSH key
-
- Внесение GitHub в список известных хостов сервера:
ssh-keyscan -H github.com >> ~/.ssh/known_hosts- Настройка конфигурации для SSH:
nano ~/.ssh/config----- ~/.ssh/config -----
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
----- ~/.ssh/config -----
- Установка прав для файла SSH-конфигурации:
chmod 600 ~/.ssh/config- Проверка взаимодействия с GitHub:
ssh -T git@github.com
# Если всё ок — увидим следующее сообщение:
# Hi <логин>! You've successfully authenticated ...- Ввод команды на сервере для получения
SSH_PRIVATE_KEY:
cat ~/.ssh/id_ed25519# Копируем все вместе с комментариями BEGIN и END
-----BEGIN OPENSSH PRIVATE KEY-----
b3...=
-----END OPENSSH PRIVATE KEY------
Ввод secrets для автодеплоя GitHub-репозитория:
-
SSH_HOST:
91.197.99.158(или другой IP-адрес сервера) -
SSH_USER:
myappuser -
SSH_PRIVATE_KEY: результат команды
cat ~/.ssh/id_ed25519на сервере -
TG_TOKEN: Telegram-токен
-
- После установки secrets проверяем функционал автодеплоя




























