Задача: научить чат-бота отсылать сообщения его автору (т.е. простейший механизм обратной связи/feedback)
Бота мы начали писать тут: https://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




Нет Ответов