https://github.com/stormozov/chatbot-english-language-teacher
Курсовой проект Нетологии
https://github.com/stormozov/chatbot-english-language-teacher
Last synced: 3 months ago
JSON representation
Курсовой проект Нетологии
- Host: GitHub
- URL: https://github.com/stormozov/chatbot-english-language-teacher
- Owner: stormozov
- Created: 2024-08-02T13:33:32.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-08-26T18:00:51.000Z (10 months ago)
- Last Synced: 2025-01-29T15:17:14.667Z (5 months ago)
- Language: Python
- Size: 813 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
#
Chatbot-English-Language-Teacher
##
Курсовой проект по разработке телеграм чат-бота
Author: [STORMOZOV](https://github.com/stormozov)
Telegram: [@s_tormozov](https://t.me/s_tormozov)
Discord: sergeytormozov
Email: [email protected]
## Описание
Данный телеграм чат-бот предназначен для изучения английского языка
с помощью карточек слов. Программа написана на языке программирования Python
и использует библиотеку pyTelegramBotAPI для взаимодействия с пользователем
через Telegram. Программа позволяет пользователю изучать слова из различных
категорий, добавлять новые слова в словарь, удалять слова из словаря.
Программа также предоставляет возможность пользователю узнать о боте и
получить список всех доступных команд.Программа использует базу данных PostgreSQL для хранения информации о
пользователях, слов и категориях слов. Также в проекте используется
библиотека SQLAlchemy для работы с базой данных.В проекте также присутствует файл
[requirements.txt](https://github.com/stormozov/chatbot-english-language-teacher/blob/main/requirements.txt)
, который содержит список
всех необходимых зависимостей для установки и запуска программы.## Программа имеет следующий функционал:
- Предоставляет пользователю слово для изучения
- Позволяет пользователю добавлять новые слова в словарь
- Позволяет пользователю удалять слова из словаря
- Предоставляет пользователю список всех доступных команд
- Предоставляет пользователю возможность узнать о боте## Структура программы:
```
root (Корневая директория)
├── data (директория для хранения)
│ ├── bot_photo.jpg
│ ├── chatbot.json
│ └── words.json
├── modules (модули проекта)
│ ├── db (пакет взаимодействия с базой данных)
│ │ ├── db_operations.py
│ │ ├── db_session.py
│ │ ├── json2db.py
│ │ ├── models.py
│ │ └── __init__.py
│ ├── fs_tools (пакет для взаимодействия с файловой системой)
│ │ ├── path_utils.py
│ │ ├── read_config.py
│ │ ├── read_file.py
│ │ └── __init__.py
│ ├── tg_bot (пакет для телеграм-бота)
│ │ ├── bot.py (!Корневой модуль пакета)
│ │ ├── bot_config.py
│ │ ├── bot_init.py
│ │ ├── response_handlers.py
│ │ ├── __init__.py
│ │ ├── db (пакет для взаимодействия с базой данных)
│ │ │ ├── user_db_utils.py
│ │ │ ├── word_db_crud.py
│ │ │ ├── word_db_utils.py
│ │ │ └── __init__.py
│ │ ├── quiz (пакет для работы над опросником)
│ │ │ ├── handle_quiz.py
│ │ │ ├── quiz_validator.py
│ │ │ └── __init__.py
│ │ ├── ui (пакет для работы над UI бота)
│ │ │ ├── drop_down_menu.py
│ │ │ ├── nav_menu.py
│ │ │ ├── quiz_menu.py
│ │ │ └── __init__.py
│ │ ├── word (пакет для работы над словами)
│ │ │ ├── input_validation.py
│ │ │ ├── word_add.py
│ │ │ ├── word_del.py
│ │ │ ├── word_format.py
│ │ │ └── __init__.py
├── .gitignore
├── requirements.txt
├── main.py (главный файл проекта)
├── settings.ini
└── README.md
```- Пакет модулей [fs_tools](https://github.com/stormozov/chatbot-english-language-teacher/tree/main/modules/fs_tools) (File System Tools) содержит модули,
которые предоставляют функции для работы с файловой системой. Эти функции
используются для управления файлами и директориями, которые необходимы для
работы чат-бота.
- Пакет модулей [db](https://github.com/stormozov/chatbot-english-language-teacher/tree/main/modules/db) (Database) содержит модули, которые необходимы для
инициализации моделей таблиц базы данных, создания сессии, загрузки данных
в таблицы.
- Пакет модулей [tg_bot](https://github.com/stormozov/chatbot-english-language-teacher/tree/main/modules/tg_bot) (Telegram bot) содержит модули и подпакеты, которые
необходимы для работы бота.
- Директория [data](https://github.com/stormozov/chatbot-english-language-teacher/tree/main/data) содержит файлы, которые необходимы для работы бота.
- Файл конфигурации `settings.ini`, в котором хранятся необходимые
конфиденциальные настройки для работы бота и базы данных.
- Файл [requirements.txt](https://github.com/stormozov/chatbot-english-language-teacher/blob/main/requirements.txt), в котором написаны зависимости, используемые для
разработки телеграм-бота.
- Файл [main.py](https://github.com/stormozov/chatbot-english-language-teacher/blob/main/main.py), который отвечает за работу всей программы.## Схема базы данных
![]()
Схема базы данных
## Файл конфигурации
Для хранения конфиденциальной информации используется файл `settings.ini`,
который должен быть расположен в корневой директории вместе с `main.py`.
Его структура:
```ini
[TG]
TOKEN = *Ваш токен телеграм-бота*[DB]
DBMS = postgresql # База данных
USER = *Ваше имя пользователя Postgres*
PASS = *Ваш пароль Postgres*
HOST = localhost # Хост для создания сессии
PORT = 5432 # Порт для создания сессии
DB = chatbot_english_words_netology # Название базы данных
```## Инструкция по работе с программой
### 1. Регистрация бота в Телеграме
Вам понадобится бот [@BotFather](https://t.me/BotFather).
Это официальный инструмент для создания ботов и управления ими. Найти
BotFather можно через поиск. Обратите внимание на синюю галочку рядом с
именем: именно она укажет на правильный чат.После регистрации вашего бота, **BotFather** предоставит ссылку на созданного
бота и токен для обращения к нему.Полученный токен необходимо сохранить в файле конфигурации `settings.ini`:
```ini
[TG]
TOKEN = *Ваш токен телеграм-бота*
```### 2. Настройки сообщений бота
Все основные данные для вывода ботом хранятся в файле
[chatbot.json](https://github.com/stormozov/chatbot-english-language-teacher/blob/main/data/chatbot.json)Там вы можете поменять:
- сообщения бота;
- лейблы кнопок;
- количество правильных необходимых ответов для пользователя до
автоматического скрытия слова из выборки;
- regex паттерны для проверки ввода пользователя;
- описание команд бота для выпадающего меню.Некоторые сообщения настраиваются напрямую в своих модулях.
### 3. Первоначальные данные для словаря бота
Данные для словаря хранятся в JSON формате. Со структурой можно ознакомиться в
файле [words.json](https://github.com/stormozov/chatbot-english-language-teacher/blob/main/data/words.json)В файле есть три категории слов. Категория `custom` предназначена для связи
данной категории со словами пользователей.За загрузку данных из JSON в базу данных отвечает модуль
[json2db.py](https://github.com/stormozov/chatbot-english-language-teacher/blob/main/modules/db/json2db.py)### 4. Запуск чат-бота
Запуск программы осуществляем из файла [main.py](https://github.com/stormozov/chatbot-english-language-teacher/blob/main/main.py)
в вашей IDE, либо через терминал:
```
python main.py
```### 5. Взаимодействие с ботом
После запуска бота нужно перейти в Telegram и найти его в списке чатов.
Затем следует нажать на кнопку «Старт» или ввести команду `/start`.Бот поприветствует вас и предложит на выбор три варианта взаимодействия с помощью кнопок.
- Чтобы начать обучение, нажмите кнопку «Проверить знания» или введите
команду `/test_knowledge`
- Чтобы добавить новое слово, выберите кнопку «Добавить слово» или воспользуйтесь командой `/add_word`
- Чтобы удалить слово из словаря пользователя, выберите кнопку «Удалить слово» или введите команду `/delete_word`Чтобы добавить или удалить слова, следуйте инструкциям бота. Бот проверяет
правильность ввода пользователя. Чтобы добавить слово, введите его на
английском языке и перевод на русский через запятую. Бот не примет два
русских или английских слова, а также слова, содержащие символы или цифры.### 6. Автоматическая проверка знаний ботом
В JSON файле [chatbot.json](https://github.com/stormozov/chatbot-english-language-teacher/blob/main/data/chatbot.json)
есть ключ `correct_answers`, в котором хранится количество необходимых
правильных ответов на вопросы бота. В рамках тестирования было выбрано число
два. При необходимости это значение можно поменять.У пользователя есть отдельное поле в
[таблице базы данных](https://github.com/stormozov/chatbot-english-language-teacher/blob/main/modules/db/models.py#L78),
которое хранит количество правильных ответов на вопросы бота. Как только это
число достигнет указанного в JSON файле, слово автоматически будет скрыто из
выборки пользователя и будет показано соответствующее сообщение об успешном
изучении этого слова.