index.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace BotKit;
  3. // Файл, на который поступают запросы
  4. require_once __DIR__ . '/src/bootstrap.php';
  5. use BotKit\Common\Bot;
  6. use BotKit\Common\Commands;
  7. use BotKit\Common\Message;
  8. use BotKit\Common\Database;
  9. use BotKit\Drivers\TestDriver;
  10. use BotKit\Events\PlainMessageEvent;
  11. use BotKit\Events\UnknownEvent;
  12. use BotKit\Events\MemberJoinedEvent;
  13. use BotKit\Events\MemberLeftEvent;
  14. use BotKit\Enums\State;
  15. use BotKit\Enums\CallbackType;
  16. use BotKit\Keyboards\SelectGroupNameKeyboard;
  17. $bot = new Bot();
  18. $drv = new TestDriver();
  19. $bot->loadDriver($drv);
  20. $bot->ensureDriversLoaded();
  21. // Выбор даты
  22. $bot->onCallback(CallbackType::SelectDate, "BotKit\Common\Commands::handleDate");
  23. // Выбор курса для группы
  24. $bot->onCallback(CallbackType::SelectGroupCourse, function($e, $u, $driver) {
  25. // Переносим полученные параметры в новую клавиатуру
  26. // А так же изменяем сообщение
  27. $params = $e->getParams();
  28. $driver->editMessage(
  29. $e->getMessageID(),
  30. Message::create("Выбери группу")
  31. ->withKeyboard(new SelectGroupNameKeyboard($params['intent'], $params['course'], 0))
  32. );
  33. });
  34. // Пользователь запросил смену страницы при выборе специальности группы
  35. $bot->onCallback(CallbackType::SelectGroupNavigation, function($e, $u, $driver) {
  36. $params = $e->getParams();
  37. $driver->editMessage(
  38. $e->getMessageID(),
  39. Message::create("Выбери группу")
  40. ->withKeyboard(new SelectGroupNameKeyboard(
  41. $params['intent'],
  42. $params['course'],
  43. $params['offset']
  44. ))
  45. );
  46. });
  47. // Выбор: вводить или не вводить логин и пароль от АВЕРС при регистрации
  48. $bot->onCallback(CallbackType::EnterCredentials, 'BotKit\Common\Commands::enterCredentials');
  49. // Выбор непосредственно группы
  50. $bot->onCallback(CallbackType::SelectGroup, 'BotKit\Common\Commands::handleGroupSelection');
  51. // Просмотр условий использования
  52. $bot->onCallback(CallbackType::TOS, 'BotKit\Common\Commands::showTermsOfService');
  53. // Заглушка
  54. $bot->onCallback(CallbackType::None, function($e, $u, $driver) {});
  55. // Начало диалога
  56. $bot->onCommand('/start', 'BotKit\Common\Commands::helloWorld');
  57. $bot->onPlainMessage(State::HelloWorld, "BotKit\Common\Commands::helloWorld");
  58. // Выбор типа аккаунта
  59. $bot->onPlainMessage(State::RegSelectType, "BotKit\Common\Commands::handleSelectType");
  60. // Ввод логина от АВЕРС при регистрации
  61. $bot->on(
  62. PlainMessageEvent::class,
  63. function ($e, $u, $driver) {
  64. return $u->getState() == State::RegLogin;
  65. },
  66. "BotKit\Common\Commands::handleRegLogin"
  67. );
  68. // Ввод пароля от АВЕРС при регистрации
  69. $bot->on(
  70. PlainMessageEvent::class,
  71. function ($e, $u, $driver) {
  72. return $u->getState() == State::RegPassword;
  73. },
  74. "BotKit\Common\Commands::handleRegPassword"
  75. );
  76. // Обработка главного меню
  77. $bot->on(
  78. PlainMessageEvent::class,
  79. function ($e, $u, $driver) {
  80. return $u->getState() == State::Hub;
  81. },
  82. "BotKit\Common\Commands::handleHUB"
  83. );
  84. // Без ответа
  85. $bot->on(
  86. PlainMessageEvent::class,
  87. function ($e, $u, $driver) { return $u->getState() == State::NoResponse; },
  88. function($e, $u, $driver) {}
  89. );
  90. // План "Б"
  91. $bot->onEvent(UnknownEvent::class, "BotKit\Common\Commands::unknownEvent");
  92. $bot->fallback("BotKit\Common\Commands::fallback");