← Вернуться к списку тем

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

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

Ответы


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

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

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

  • Грачик Абдулошвили [14.02.2020 в 21:15 → iMakeBots]
    Бот неплохой, а могли бы пояснить вот этот кусок-
        private function router()
        {
            $data = $this->rawData;
            $chat_id = $this->getChatId();
            $text = $this->getText();
            if (array_key_exists("message", $data)) {
                if (array_key_exists("text", $data['message'])) {
                    if ($text == "/start") {
                        $this->startBot($chat_id);
                    } elseif ($this->getStepUser($chat_id) == 1) {
                        $this->saveStep1($chat_id);
                    } elseif ($this->getStepUser($chat_id) == 3) {
                        $this->saveStep3($chat_id);
                    } elseif ($text == "/all" && $this->isAdmin($chat_id)) {
                        $msg = "Привет, Хозяин!\nПросмотр анкет:";
                        $this->sendMessage($chat_id, $msg);
                        $this->showUsersAnkets();
                    }
                }
    почему только степ1 и степ 3 ?
  • iMakeBots [14.02.2020 в 22:35 → Грачик Абдулошвили]
    Потому что в этих методах идет сохранение данных введенных пользователем. В степ 2 идет сохранение результата по кнопке.
  • Грачик Абдулошвили [24.02.2020 в 15:23 → iMakeBots]
    да бот рабочий, единственное я заметил что если как у вас в код НЕ зашивать обновление Вебхуков то приходится где то раз в час дергать ссылку-
    https://api.telegram.org/bot9700000:AAHOKBgIs20mJхххххххJGKayDaXx4eY34/setwebhook?url=https://ХХХХ.ml/index.php
    иначе бот засыпает.
  • iMakeBots [24.02.2020 в 16:27 → Грачик Абдулошвили]
    Вебхук не зашивается, а настраивается на точку входа - в которую он при наличии обновлений, их направляет.
    Скрипт бота - это обработчик присланных вебхуком обновлений.
  • {{{ A ~ ReY }}} [12.10.2020 в 13:02 → iMakeBots]
    Здравствуйте!
    Подскажите. пожалуйста, а как правильно осуществить подтверждение и редактирование данных ? Допустим пользователь нажал не ту кнопку ? Чтоб была возможность в конце подтвердить/отменить/изменить данные.
    Спасибо большое
  • iMakeBots [12.10.2020 в 13:14 → {{{ A ~ ReY }}}]
    В бот предусмотренна возможность «гулять» по анкете, в том числе и отменить.
  • {{{ A ~ ReY }}} [12.10.2020 в 21:53 → iMakeBots]
    Подскажите, пожалуйста. К сожалению я только начинаю изучать PHP. Поверхность знаю про ООП (Из видеоуроков). Вижу, что методы с названиями удалить анкету и подобные имеются в индексном файле. НО я не пойму как они запускаются и где они работают в самом боте. Т.е. я прохожу анкетирование, но кнопок отменить/сохранить/удалить - нет. Анкета сохраняется, на ид администратора уходит сообщение и на этом все. Подскажите, пожалуйста, куда копать ?( Спасибо большое заранее :)
  • iMakeBots [20.10.2020 в 10:20 → {{{ A ~ ReY }}}]
    В модели Claim в файле Controllers/Claim.php в методе previewResult() обратите внимание на массив кнопок $buttons в нем присутствуют кнопки:
    goBackBtn - вернуться назад на 1 шаг
    sendBtn - отправить
    editBtn - редактировать - вернет на 1 шаг анкеты
    cancelBtn - отменить - предложит варианты отменить или продолжить