Пример бота для анкетирования

← К списку тем

Здравствуйте, если будет время и желание у вас сделайте Бота - анкетёра.
То есть челвоек подключается-
Бот спрашивает- как зовут?
Чел отвечает Вася
Бота сразу задает следубщий вопрос- Сколько лет.
и т.д.
а в конце сообщение или кнопка- Анкетирование успешно пройдено.
а весь диалог в тхт файле на сервере.
Грачик Абдулошвили 22.10.2019 в 18:54

Авторизуйтесь через Telegram, чтобы ответить.
Откройте бот @SiteAuthBot, нажмите кнопку Старт/Start. Следуйте инструкциям бота.


Ответы

  • Было время ))) написал простого бота. Он собирает данные: Имя, Пол, Возраст. После заполнения анкеты - результат пишется в файл в директории "ankets" (по умолчанию создается) присылает уведомление админу бота что создана анкета. Если админ зашлет команду /all в бот, то получит список всех имеющихся анкет.

    Ну он получился очень не оптимизированный, так для примера на 3 вопроса. Можете его сделать универсальным под любое количество вопросов.

    Скачать бот анкету

    iMakeBots 22.10.2019 в 23:53
    • Бот неплохой, а могли бы пояснить вот этот кусок-
          private function router()<br />
          {<br />
              $data = $this->rawData;<br />
              $chat_id = $this->getChatId();<br />
              $text = $this->getText();<br />
              if (array_key_exists("message", $data)) {<br />
                  if (array_key_exists("text", $data['message'])) {<br />
                      if ($text == "/start") {<br />
                          $this->startBot($chat_id);<br />
                      } elseif ($this->getStepUser($chat_id) == 1) {<br />
                          $this->saveStep1($chat_id);<br />
                      } elseif ($this->getStepUser($chat_id) == 3) {<br />
                          $this->saveStep3($chat_id);<br />
                      } elseif ($text == "/all" && $this->isAdmin($chat_id)) {<br />
                          $msg = "Привет, Хозяин!\nПросмотр анкет:";<br />
                          $this->sendMessage($chat_id, $msg);<br />
                          $this->showUsersAnkets();<br />
                      }<br />
                  }
      почему только степ1 и степ 3 ?
      Грачик Абдулошвили 14.02.2020 в 21:15
      • Потому что в этих методах идет сохранение данных введенных пользователем. В степ 2 идет сохранение результата по кнопке.
        iMakeBots 14.02.2020 в 22:35
    • да бот рабочий, единственное я заметил что если как у вас в код НЕ зашивать обновление Вебхуков то приходится где то раз в час дергать ссылку-
      https://api.telegram.org/bot9700000:AAHOKBgIs20mJхххххххJGKayDaXx4eY34/setwebhook?url=https://ХХХХ.ml/index.php
      иначе бот засыпает.
      Грачик Абдулошвили 24.02.2020 в 15:23
      • Вебхук не зашивается, а настраивается на точку входа - в которую он при наличии обновлений, их направляет.
        Скрипт бота - это обработчик присланных вебхуком обновлений.
        iMakeBots 24.02.2020 в 16:27