Задача: научить чат-бота отсылать сообщения его автору (т.е. простейший механизм обратной связи/feedback)
Бота мы начали писать тут: http://nujensait.ru/10776/
Пилим фичу
Научим бота доставлять нам сообщения командой вида:
/msg <текст сообщения>
то есть не в режиме диалога, а одной командой
Добавим в класс 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
Протестировать как все работает в реальности можно тут: https://t.me/mishaikon_bot
Продолжение следует … Подпишитесь на мой телегам канал, все новости тут: https://t.me/develguru
Нет комментариев