Разработка базы данных Telegram-бота для изучения английского языка.
DB_NAME
: название базы данных в PostgresDB_USER
: имя пользователя PostgresDB_PASSWORD
: пароль пользователя PostgresTG_TOKEN
: токен для подключения к чат-боту TelegramTEST_DB_NAME
: название тестовой базы данных в Postgres (для работы в разрезе модуляtest.py
)
Запуск чат-бота Telegram, обучающего пользователя английскому языку. В процессе работы программы обучающие могут осуществить одно из следующих возможных действий:
- выбор одного из четырех вариантов перевода английского слова нажатием клавиши
- добавление английского слова в персональную базу данных (БД) пользователя Telegram нажатием клавиши "Добавить слово"
- удаление английского слова из персональной БД пользователя Telegram нажатием клавиши "Удалить слово"
Проект выполнен на Python 3.9.10 в PyCharm CE (64-bit, Linux Ubuntu). Код для запуска чат-бота находится в модуле main.py
, а библиотеки для установки - в файле requirements.txt
.
Перед запуском кода следует удостовериться, что:
- заведен проект в IDE
- размещены все файлы в папке с проектом
- установлены все библиотеки, указанные в
requirements.txt
- заполнены все сведения, содержащиеся в файле
.env
data/
├─ database_csv/
│ ├─ database.csv
├─ eng_audio_files_mp3/
│ ├─ file.mp3
database/
├─ schema/
│ ├─ schema.png
├─ __init__.py
├─ creation.py
├─ repository.py
├─ structure.py
tests/
├─ __init__.py
├─ test.py
tgbot/
├─ instruction/
│ ├─ instruction.png
├─ __init__.py
├─ connection.py
├─ functionality.py
├─ parsing.py
.env
.gitignore
filefinder.py
main.py
README.md
requirements.txt
-
data
: папка с данными, относительно которых формируется БД в Postgres:database_csv
: папка, содержащая CSV-файл с 4000 уникальными английскими словами (database.csv
)- относительно
database.csv
заполняется первоначальная БД в Postgres - данные, содержащиеся в csv-файле, были получены посредством парсинга сайтов (см. ветку data текущего репозитория)
- относительно
eng_audio_files_mp3
: папка, включающая MP3-файлы с произношением английских слов- MP3-файлы запускаются в чат-боте
-
database
: пакет с модулями, ориентированными на работу с БД в Postgresschema
: папка, содержащая схему БД (schema.png
)creation.py
: модуль, нацеленный на формирование БД и таблицrepository.py
: модуль, содержащий фукнционал по работе с репозиториемstructure.py
: модуль, отвечающий за построение структуры таблиц
-
tests
: пакет, направленный на тестирование функционала приложенияtest.py
: модуль, отвечающий за тест функционала приложения
-
tgbot
: пакет с модулями, затрагивающими работу чат-бота Telegraminstruction
: папка, содержащая скриншоты работы с чат-ботомconnection.py
: модуль, нацеленный на подключение к чат-ботуfunctionality.py
: модуль, отвечающий за функционал чат-ботаparsing.py
: модуль, отвечающий за парсинг данных с сайтов для чат-бота
-
.env
: файл, в котором заполняются все необходимые данные для подключения к чат-боту Телеграм и БД Postgresfilefinder.py
: модуль, отвечающий за поиск файлов и папок внутри проектаmain.py
: файл, обобщающий весь функционал проектаrequirements.txt
: файл с библиотеками, требующими установки
-
pos
: таблица с частями речи английских словid
: ID части речиpos_name
: наименование части речи
-
words
: таблица с данными английских словid
: ID английского словаen_word
: английское словоen_trans
: транскрипция английского словаmp_3_url
: URL-ссылка на MP3-файл с произношением словаid_pos
: ID части речи английского словаru_word
: перевод английского словаen_example
: предожение с использованием английского словаru_example
: предожение с использованием переводаis_added_by_users
: факт добавления слова пользователямиTrue
- слово добавлено одним из пользователейFalse
- слово добавлено разработчиком приложения
-
users
: таблица с пользователями приложенияuser_id
: Telegram ID пользователяfirst_name
: имя пользователяlast_name
: фамилия пользователяusername
: профиль пользователя в Telegram
-
users_words
: таблица, связывающая пользователей со словамиid
: ID пары "пользователь-слово"user_id
: Telegram ID пользователяword_id
: ID слова из таблицы wordsis_added
: факт добавления слова в личную БД пользователяTrue
- слово добавлено в личную БД пользователяFalse
- слово убрано из личной БД пользователя
is_user_word
: факт добавления слова пользователемTrue
- слово добавлено конкретным пользователемFalse
- слово добавлено разработчиком приложения
date_added
: дата добавления пользователем слова в личную БДdate_deleted
: дата удаления пользователем слова из личной БД
Для включения программы необходимо:
-
заполнить все сведения в файле
.env
DB_NAME
: название БД в PostgresTEST_DB_NAME
: название тестовой БД в PostgresDB_USER
: имя пользователя Postgres, относительно которого формируется БДDB_PASSWORD
: пароль пользователя PostgresTG_TOKEN
: токен для подключения к чат-боту Telegram
-
запустить модуль
main.py
-
после появления фразы
ПОДКЛЮЧЕНИЕ К ЧАТ-БОТУ...
можно начинать взаимодествие с чат-ботом Telegram
При желании можно запустить модуль test.py
для тестирования функционала приложения
DB_NAME='EngStudyBot'
TEST_DB_NAME='TestEngStudyBot'
DB_USER='postgres'
DB_PASSWORD='postgres'
TG_TOKEN='1010101010:AAAaaaAAaaaa1aAaAaAAAaAA-aaAAAaAaO1'
- После подключения к чат-боту Telegram нажимаем на клавишу
Start
- Отгадываем правильный перевод английского слова
- При выборе неправильного варианта ответа появится крестик
- При выборе корректного варианта ответа появится сообщение о верном ответе
- Для продолжения пользователем нажимается клавиша
"Дальше"
- После нажатия на клавишу
"Добавить слово"
чат-бот просит пользователя ввести английское слово, которое необходимо добавить в собственную БД
- При добавлении существующего слова чат-бот сообщит о его наличии в базе данных пользователя
- Непредусмотренное нажатие клавиш, содержащих команды
"Дальше"
,"Добавить слово"
и"Удалить слово"
, приводит к невозможности обработки их чат-ботом
- При вводе нового английского слова, существующего в БД онлайн-словарей (Oxford, Promt.One), чат-бот автоматически добавляет его в БД пользователя Telegram
- При вводе нового английского слова, отсутствующего в БД онлайн-словарей (Oxford, Promt.One), чат-бот просит пользователя ввести перевод английского слова
- При вводе русского слова вместо английского чат-бот просит пользователя Telegram нажать на клавишу
Добавить слово
и повторить попытку
- При вводе английского слова вместо русского чат-бот просит пользователя Telegram нажать на клавишу
Добавить слово
и повторить попытку
-
Для удаления английского слова из БД пользователя Telegram необходимо нажать на клавишу
"Удалить слово"
-
Непредусмотренное нажатие клавиш, содержащих команды
"Дальше"
,"Добавить слово"
и"Удалить слово"
, приводит к невозможности обработки их чат-ботом
- При отсутствии английского слова в БД пользователя Telegram чат-бот извещает его о невозможности выполнить запрошенную операцию
- При наличии введенного английского слова в БД пользователя Telegram чат-бот удаляет его
- При вводе русского слова вместо английского чат-бот просит пользователя Telegram нажать на клавишу
Удалить слово
и повторить попытку