tg-chatbot-eng-teacher

1

Описание

Этот телеграм-бот позволяет изучать английский язык с помощью карточек слов, написанный на Python с использованием библиотеки pyTelegramBotAPI. Бот позволяет изучать слова из различных категорий, добавлять и удалять слова, а также получать информацию о боте и командах.

Языки

  • Python100%
README.md

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, который отвечает за работу всей программы.

Схема базы данных

Примерный дизайн бота

Схема базы данных

Файл конфигурации

Для хранения конфиденциальной информации используется файл

settings.ini
, который должен быть расположен в корневой директории вместе с
main.py
. Его структура:

Инструкция по работе с программой

1. Регистрация бота в Телеграме

Вам понадобится бот @BotFather. Это официальный инструмент для создания ботов и управления ими. Найти BotFather можно через поиск. Обратите внимание на синюю галочку рядом с именем: именно она укажет на правильный чат.

После регистрации вашего бота, BotFather предоставит ссылку на созданного бота и токен для обращения к нему.

Полученный токен необходимо сохранить в файле конфигурации

settings.ini
:

2. Настройки сообщений бота

Все основные данные для вывода ботом хранятся в файле chatbot.json

Там вы можете поменять:

  • сообщения бота;
  • лейблы кнопок;
  • количество правильных необходимых ответов для пользователя до автоматического скрытия слова из выборки;
  • regex паттерны для проверки ввода пользователя;
  • описание команд бота для выпадающего меню.

Некоторые сообщения настраиваются напрямую в своих модулях.

3. Первоначальные данные для словаря бота

Данные для словаря хранятся в JSON формате. Со структурой можно ознакомиться в файле words.json

В файле есть три категории слов. Категория

custom
предназначена для связи данной категории со словами пользователей.

За загрузку данных из JSON в базу данных отвечает модуль json2db.py

4. Запуск чат-бота

Запуск программы осуществляем из файла main.py в вашей IDE, либо через терминал:

python main.py

5. Взаимодействие с ботом

После запуска бота нужно перейти в Telegram и найти его в списке чатов. Затем следует нажать на кнопку «Старт» или ввести команду

/start
.

Бот поприветствует вас и предложит на выбор три варианта взаимодействия с помощью кнопок.

  • Чтобы начать обучение, нажмите кнопку «Проверить знания» или введите команду
    /test_knowledge
  • Чтобы добавить новое слово, выберите кнопку «Добавить слово» или воспользуйтесь командой
    /add_word
  • Чтобы удалить слово из словаря пользователя, выберите кнопку «Удалить слово» или введите команду
    /delete_word

Чтобы добавить или удалить слова, следуйте инструкциям бота. Бот проверяет правильность ввода пользователя. Чтобы добавить слово, введите его на английском языке и перевод на русский через запятую. Бот не примет два русских или английских слова, а также слова, содержащие символы или цифры.

6. Автоматическая проверка знаний ботом

В JSON файле chatbot.json есть ключ

correct_answers
, в котором хранится количество необходимых правильных ответов на вопросы бота. В рамках тестирования было выбрано число два. При необходимости это значение можно поменять.

У пользователя есть отдельное поле в таблице базы данных, которое хранит количество правильных ответов на вопросы бота. Как только это число достигнет указанного в JSON файле, слово автоматически будет скрыто из выборки пользователя и будет показано соответствующее сообщение об успешном изучении этого слова.