index.php 3.8 KB

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