|
@@ -7,11 +7,22 @@ namespace BotKit\Common;
|
|
|
use BotKit\Common\Message;
|
|
|
use BotKit\Enums\Platform;
|
|
|
use BotKit\Enums\State;
|
|
|
-use BotKit\Keyboards\TermsOfServiceKeyboard;
|
|
|
use BotKit\Attachments\ImageAttachment;
|
|
|
|
|
|
+use BotKit\Enums\GroupSelect;
|
|
|
+
|
|
|
+use BotKit\Keyboards\TermsOfServiceKeyboard;
|
|
|
+use BotKit\Keyboards\SelectUserTypeKeyboard;
|
|
|
+use BotKit\Keyboards\HubKeyboard;
|
|
|
+use BotKit\Keyboards\SelectGroupCourseKeyboard;
|
|
|
+use BotKit\Keyboards\AskEnterCredentialsKeyboard;
|
|
|
+
|
|
|
+use BotKit\Models;
|
|
|
+
|
|
|
class Commands {
|
|
|
|
|
|
+ #region Callback
|
|
|
+
|
|
|
// Отправка условий использования
|
|
|
public static function showTermsOfService($e, $u, $driver) {
|
|
|
$driver->editMessage(
|
|
@@ -21,9 +32,57 @@ class Commands {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ // Выбор группы
|
|
|
+ public static function handleGroupSelection($e, $u, $driver) {
|
|
|
+ $params = $e->getParams();
|
|
|
+ $intent = GroupSelect::from($params['intent']);
|
|
|
+ switch ($intent) {
|
|
|
+ case GroupSelect::Register:
|
|
|
+ // Группа выбрана, зарегистрирован студент
|
|
|
+ StudentModel::create($u['id'], $params['group_id'], 0);
|
|
|
+
|
|
|
+ $driver->editMessage(
|
|
|
+ $e->getMessageID(),
|
|
|
+ Message::create("Хочешь ввести логин и пароль для просмотра оценок?")
|
|
|
+ ->withKeyboard(new AskEnterCredentialsKeyboard())
|
|
|
+ );
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ $driver->sendMessage($u, Message::create("[Unknown group select value]"));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Выбор хочу/не хочу
|
|
|
+ public static function enterCredentials($e, $u, $driver) {
|
|
|
+ $params = $e->getParams();
|
|
|
+ if ($params['enters'] == 0) {
|
|
|
+ // Пользователь не захотел вводить пароль и логин
|
|
|
+ $driver->editMessage(
|
|
|
+ $e->getMessageID(),
|
|
|
+ Message::create("Регистрация завершена!")
|
|
|
+ ->withKeyboard(new HubKeyboard())
|
|
|
+ );
|
|
|
+ $u->setState(State::Hub);
|
|
|
+ } else {
|
|
|
+ // Пользователь захотел вводить пароль и логин
|
|
|
+ $driver->sendMessage($u, Message::create("Введи логин"));
|
|
|
+ $u->setState(State::RegLogin);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
public static function helloWorld($e, $u, $driver) {
|
|
|
- // Проверить: сообщение из чата или от пользователя
|
|
|
- $url = 'https://www.wallpaperflare.com/static/929/413/133/artwork-aenami-abstract-painting-wallpaper.jpg';
|
|
|
+ //~ if ($u->getState() != State::HelloWorld) {
|
|
|
+ //~ $driver->reply(
|
|
|
+ //~ $e,
|
|
|
+ //~ Message::create("Ты уже зарегистрирован")
|
|
|
+ //~ ->withKeyboard(new HubKeyboard())
|
|
|
+ //~ );
|
|
|
+ //~ return;
|
|
|
+ //~ }
|
|
|
+
|
|
|
$driver->reply(
|
|
|
$e,
|
|
|
Message::create("Привет, я - Техбот. Моя задача - облегчить твою жизнь, но, для начала, мне нужно задать несколько вопросов"),
|
|
@@ -36,51 +95,47 @@ class Commands {
|
|
|
->withKeyboard(new TermsOfServiceKeyboard()),
|
|
|
false
|
|
|
);
|
|
|
- $u->setState(State::Registering);
|
|
|
- }
|
|
|
-
|
|
|
- // Помощь
|
|
|
- public static function help($e, $u, $driver) {
|
|
|
- $driver->reply($e, Message::create("Помощь по BotKit"));
|
|
|
- }
|
|
|
-
|
|
|
- // Помощь по теме
|
|
|
- public static function helpTopic($e, $u, $driver, $topic) {
|
|
|
- $driver->reply($e, Message::create("Помощь по ".$topic));
|
|
|
+ $driver->reply(
|
|
|
+ $e,
|
|
|
+ Message
|
|
|
+ ::create("Ты студент или преподаватель?")
|
|
|
+ ->withKeyboard(new SelectUserTypeKeyboard()),
|
|
|
+ false
|
|
|
+ );
|
|
|
+ $u->setState(State::RegSelectType);
|
|
|
}
|
|
|
|
|
|
- // Помощь по теме
|
|
|
- public static function fallback($e, $u, $driver) {
|
|
|
- $driver->reply($e, Message::create("FALLBACK"));
|
|
|
+ // Обработка выбора типа аккаунта
|
|
|
+ public static function handleSelectType($e, $u, $driver) {
|
|
|
+ if ($e->getText() == "Я студент") {
|
|
|
+ // Создать объект студента
|
|
|
+ $driver->reply(
|
|
|
+ $e,
|
|
|
+ Message::create("Выбери курс, на котором сейчас учишься")
|
|
|
+ ->withKeyboard(new SelectGroupCourseKeyboard(GroupSelect::Register)),
|
|
|
+ false
|
|
|
+ );
|
|
|
+ $u->setState(State::NoResponse);
|
|
|
+ } else {
|
|
|
+ // TODO
|
|
|
+ $driver->reply($e, Message::create("Функционал ещё не реализован"));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- public static function registered($e, $u, $driver) {
|
|
|
- // Проверить: сообщение из чата или от пользователя
|
|
|
- $driver->reply($e, Message::create("REGISTERED"));
|
|
|
- }
|
|
|
+ // Обработка ввода логина при регистрации
|
|
|
+ public static function handleRegLogin($e, $u, $driver) {
|
|
|
+ $student = Models\StudentModel::where([
|
|
|
+ ['user_id', '=', $u['id']]
|
|
|
+ ])[0];
|
|
|
|
|
|
- // Функция приветствия пользователя
|
|
|
- public static function greetMember($e, $u, $driver) {
|
|
|
- $username = self::getNick($u, $driver);
|
|
|
- $driver->sendToChat(
|
|
|
- $e->getChat(),
|
|
|
- Message::create("Добро пожаловать в чат, ".$username)
|
|
|
- );
|
|
|
+ $driver->varDump("Student", $student);
|
|
|
}
|
|
|
|
|
|
- // Функция прощания с пользователем
|
|
|
- public static function bye($e, $u, $driver) {
|
|
|
- $username = self::getNick($u, $driver);
|
|
|
- echo $username;
|
|
|
- $driver->sendMessage($u, Message::create("Будем скучать, ".$username));
|
|
|
+ public static function fallback($e, $u, $driver) {
|
|
|
+ $driver->sendMessage($u, Message::create("Функционал не реализован"));
|
|
|
}
|
|
|
|
|
|
- // Возвращает ник пользователя
|
|
|
- private static function getNick($u, $driver) {
|
|
|
- $username = $driver->getUserNick($u);
|
|
|
- if (empty($username)) {
|
|
|
- return $u->getPlatformID();
|
|
|
- }
|
|
|
- return $username;
|
|
|
+ public static function unknownEvent($e, $u, $driver) {
|
|
|
+ $driver->sendMessage($u, Message::create("Неизвестное событие"));
|
|
|
}
|
|
|
}
|