Задача: научить чат-бота отсылать сообщения его автору (т.е. простейший механизм обратной связи/feedback)

(warning) Бота мы начали писать тут: http://nujensait.ru/10776/


Пилим фичу

Научим бота доставлять нам сообщения командой вида:

/msg <текст сообщения>

  • (warning) то есть не в режиме диалога, а одной командой

Добавим в класс MishaikonBotметод отсылки сообщения владельцу бота:

    /**
     * Send msg to bot author
     * @param string $reply
     * @return MessageObject
     * @throws TelegramBotExceptionsTelegramSDKException
     */
    public function sendMeMsg(string $reply): MessageObject
    {
        $myTgId = $this->config['me']['tg_user_id'];
        return $this->tgApi->sendMessage(['chat_id' => $myTgId, 'parse_mode' => 'HTML', 'disable_web_page_preview' => true, 'text' => $reply]);
    }

а также сам метод отсылки сообщения:

    /**
     * Send msg to author
     * @return bool
     * @throws TelegramBotExceptionsTelegramSDKException
     */
    private function actMsg(): bool
    {
        $msgText = $this->msg->getText();
        $msgCmd = strtok($msgText, " ");
        $msgQues = strtok("n");
        $chatId = $this->msg->getChatId();
        $userId = $this->msg->getFromUserId();
        $userName = $this->msg->getFromUserName();

        if($msgQues) {
            // to admin
            $msgMe = "Сообщение от пользователя @$userName (#$userId): n" . $msgQues;  
            $this->sendMeMsg($msgMe);
            // to user
            $msgText = "Спасибо, ваше сообщение успешно отправлено.";
            $this->sendMsg($msgText);
        } else {
            // to user
            $msgText = "Напишите ваше сообщение в формате: n/msg текст_сообщения";
            $this->sendMsg($msgText);
        }

        return true;
    }

Тестируем фичу

Пишем боту сообщение от другого юзера:

Получаем сообщение юзером-владельцем (администратором):

(звезда) в тестах, можем отсылать сообщение самому себе, также будет приходить


  • Commit:
  • add /msg command: receive anonymus users messages
  • add cmds icons to /start menu

(warning) Протестировать как все работает в реальности можно тут: https://t.me/mishaikon_bot


Продолжение следует … Подпишитесь на мой телегам канал, все новости тут: https://t.me/develguru

Tags

Нет комментариев

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.