Класс Authentication реализует логику для работы с Telegram API, включая получение обновлений, обработку сообщений, и отправку ответов. Основные функции включают регистрацию пользователей, проверку правильности введенных данных и управление правами администратора.
Поля класса:
- API_URL: URL API, к которому подключается класс.
- mock_users: Хранит данные пользователей, зарегистрированных в боте.
- admin_id: Хранит идентификатор администратора чата.
Методы:
1. getUpdates(long offset):
Описание: Получает обновления (новые сообщения) от Telegram API. Логика:
- Формирует URL для запроса.
- Открывает соединение и выполняет GET-запрос.
- Считывает ответ и преобразует его в JSON.
- Возвращает массив обновлений (JSONArray).
2. handleUpdate(JSONObject update):
Описание: Обрабатывает полученное обновление. Логика:
- Проверяет, есть ли сообщение.
- Извлекает данные сообщения (текст, идентификатор чата, пользователя).
- Обрабатывает команды (/start, /delete_me) и ввод данных.
- Изменяет статус пользователя и отправляет соответствующие ответы.
3. sendMessage(String chatId, String text):
Описание: Отправляет сообщение пользователю. Логика:
- Создает HTTP POST-запрос к API для отправки сообщения.
- Записывает данные сообщения в поток.
- Проверяет код ответа и выводит результат.
4. sendYesNoQuestion(String chatId):
Описание: Отправляет пользователю сообщение с вопросом и кнопками для ответа. Логика:
- Создает HTTP POST-запрос для отправки сообщения с кнопками.
- Отправляет сообщение с использованием JSON для формирования inline-клавиатуры.
5. isValidGroupFormat(String group):
Описание: Проверяет правильность формата группы. Логика:
- Использует регулярное выражение для проверки формата группы (например, "ИУ10-66").
- Возвращает true, если формат правильный, и false в противном случае.
6. handleCallbackQuery(String chatId, String callData):
Описание: Обрабатывает нажатия на кнопки inline-клавиатуры. Логика:
- Проверяет наличие пользователя в списке зарегистрированных.
- Обрабатывает ответы "Да" и "Нет" на вопрос о корректности введенных данных.
- Изменяет статус пользователя в зависимости от ответа.
Класс User: Этот вложенный класс представляет пользователя и включает методы для управления состоянием регистрации.