function processUpdate(Update $update) { $updateId = $update->updateId; printf("Got update #%d\n", $updateId); if (!empty($update->message)) { $message = $update->message; if (!empty($update->message->text)) { printf(" Got message: %s\n", $message->text); $button1 = (new InlineKeyboardButton('Go to GitHub'))->setUrl('https://github.com'); $button2 = (new InlineKeyboardButton('Switch to inline'))->setSwitchInlineQuery("test query"); $button3 = (new InlineKeyboardButton('Show text'))->setCallbackData('text'); $button4 = (new InlineKeyboardButton('Show alert'))->setCallbackData('alert'); $markupData = [[$button1, $button2], [$button3, $button4]]; $inlineReplyMarkup = new InlineKeyboardMarkup($markupData); if (!empty($message->from) && !empty($message->chat)) { switch ($message->chat->type) { case Chat::TYPE_PRIVATE: printf(" Sending answer to a user %s\n", $message->chat->id); $method = new SendMessage($message->chat->id, $message->text); $method->setReplyMarkup($inlineReplyMarkup); return $method; break; case Chat::TYPE_GROUP: case Chat::TYPE_SUPERGROUP: printf(" Inline keyboard is available only for private chats\n"); break; } } } } elseif (!empty($update->callbackQuery)) { $callbackQuery = $update->callbackQuery; printf(" CallbackQuery received:\n"); print_r($callbackQuery); $method = new AnswerCallbackQuery($callbackQuery->id); if ($callbackQuery->data == 'text') { $method->setText("Show text"); } elseif ($callbackQuery->data == 'alert') { $method->setShowAlert(true); $method->setText("Show alert"); } return $method; } return null; }
protected function stateWaitingCommand(Update $update) : \Generator { if (!empty($update->message)) { $message = $update->message; if (!empty($update->message->text)) { printf(" Got message: %s\n", $message->text); if (!empty($message->from) && !empty($message->chat)) { switch ($message->chat->type) { case Chat::TYPE_PRIVATE: switch ($message->text) { case '/text': yield from $this->textCommand(); break; case '/markup': yield from $this->markupCommand(); break; case '/end': yield from $this->endCommand(); break; } break; case Chat::TYPE_GROUP: case Chat::TYPE_SUPERGROUP: printf(" Edit message is available only for private chats\n"); break; } } } } elseif (!empty($update->callbackQuery)) { $callbackQuery = $update->callbackQuery; printf(" CallbackQuery received:\n"); print_r($callbackQuery); $method = new AnswerCallbackQuery($callbackQuery->id); if ($callbackQuery->data == 'text') { $method->setText("Show text"); } elseif ($callbackQuery->data == 'alert') { $method->setShowAlert(true); $method->setText("Show alert"); } elseif ($callbackQuery->data == 'edit') { $newText = $this->message->text . ' edit-callback'; $editMethod = new EditMessageText($newText); $editMethod->setMessageId($this->message->messageId); $editMethod->setChatId($this->message->chat->id); $editMethod->setReplyMarkup($this->inlineKeyboardMarkup); $this->message = (yield from $this->api->execute($editMethod)); } yield from $this->api->execute($method); } return null; }