tg-chatbot-eng-teacher
Описание
Этот телеграм-бот позволяет изучать английский язык с помощью карточек слов, написанный на Python с использованием библиотеки pyTelegramBotAPI. Бот позволяет изучать слова из различных категорий, добавлять и удалять слова, а также получать информацию о боте и командах.
Языки
- Python100%
Chatbot-English-Language-Teacher
Курсовой проект по разработке телеграм чат-бота
Author: STORMOZOV
Telegram: @s_tormozov
Discord: sergeytormozov
Email: sergei.tormozow@yandex.ru
Описание
Данный телеграм чат-бот предназначен для изучения английского языка с помощью карточек слов. Программа написана на языке программирования Python и использует библиотеку pyTelegramBotAPI для взаимодействия с пользователем через Telegram. Программа позволяет пользователю изучать слова из различных категорий, добавлять новые слова в словарь, удалять слова из словаря. Программа также предоставляет возможность пользователю узнать о боте и получить список всех доступных команд.
Программа использует базу данных PostgreSQL для хранения информации о пользователях, слов и категориях слов. Также в проекте используется библиотека SQLAlchemy для работы с базой данных.
В проекте также присутствует файл 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 (File System Tools) содержит модули,
которые предоставляют функции для работы с файловой системой. Эти функции
используются для управления файлами и директориями, которые необходимы для работы чат-бота. - Пакет модулей db (Database) содержит модули, которые необходимы для инициализации моделей таблиц базы данных, создания сессии, загрузки данных в таблицы.
- Пакет модулей tg_bot (Telegram bot) содержит модули и подпакеты, которые необходимы для работы бота.
- Директория data содержит файлы, которые необходимы для работы бота.
- Файл конфигурации
, в котором хранятся необходимые конфиденциальные настройки для работы бота и базы данных.settings.ini - Файл requirements.txt, в котором написаны зависимости, используемые для разработки телеграм-бота.
- Файл main.py, который отвечает за работу всей программы.
Схема базы данных
Схема базы данных
Файл конфигурации
Для хранения конфиденциальной информации используется файл ,
который должен быть расположен в корневой директории вместе с .
Его структура:
Инструкция по работе с программой
1. Регистрация бота в Телеграме
Вам понадобится бот @BotFather. Это официальный инструмент для создания ботов и управления ими. Найти BotFather можно через поиск. Обратите внимание на синюю галочку рядом с именем: именно она укажет на правильный чат.
После регистрации вашего бота, BotFather предоставит ссылку на созданного бота и токен для обращения к нему.
Полученный токен необходимо сохранить в файле конфигурации :
2. Настройки сообщений бота
Все основные данные для вывода ботом хранятся в файле chatbot.json
Там вы можете поменять:
- сообщения бота;
- лейблы кнопок;
- количество правильных необходимых ответов для пользователя до автоматического скрытия слова из выборки;
- regex паттерны для проверки ввода пользователя;
- описание команд бота для выпадающего меню.
Некоторые сообщения настраиваются напрямую в своих модулях.
3. Первоначальные данные для словаря бота
Данные для словаря хранятся в JSON формате. Со структурой можно ознакомиться в файле words.json
В файле есть три категории слов. Категория предназначена для связи
данной категории со словами пользователей.
За загрузку данных из JSON в базу данных отвечает модуль json2db.py
4. Запуск чат-бота
Запуск программы осуществляем из файла main.py в вашей IDE, либо через терминал:
python main.py
5. Взаимодействие с ботом
После запуска бота нужно перейти в Telegram и найти его в списке чатов.
Затем следует нажать на кнопку «Старт» или ввести команду .
Бот поприветствует вас и предложит на выбор три варианта взаимодействия с помощью кнопок.
- Чтобы начать обучение, нажмите кнопку «Проверить знания» или введите
команду /test_knowledge
- Чтобы добавить новое слово, выберите кнопку «Добавить слово» или воспользуйтесь командой /add_word
- Чтобы удалить слово из словаря пользователя, выберите кнопку «Удалить слово» или введите команду /delete_word
Чтобы добавить или удалить слова, следуйте инструкциям бота. Бот проверяет правильность ввода пользователя. Чтобы добавить слово, введите его на английском языке и перевод на русский через запятую. Бот не примет два русских или английских слова, а также слова, содержащие символы или цифры.
6. Автоматическая проверка знаний ботом
В JSON файле chatbot.json
есть ключ , в котором хранится количество необходимых
правильных ответов на вопросы бота. В рамках тестирования было выбрано число
два. При необходимости это значение можно поменять.
У пользователя есть отдельное поле в таблице базы данных, которое хранит количество правильных ответов на вопросы бота. Как только это число достигнет указанного в JSON файле, слово автоматически будет скрыто из выборки пользователя и будет показано соответствующее сообщение об успешном изучении этого слова.