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;
}
예제 #2
0
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);
            $replyMarkup = (new ReplyKeyboardMarkup([['Buttons', 'are', 'strings']]))->addKeyboardRow()->addKeyboardButton(new KeyboardButton('Object button 1'))->addKeyboardButton(new KeyboardButton('Object button 2'))->addKeyboardRow([(new KeyboardButton('Request contact'))->setRequestContact(true)])->addKeyboardRow([(new KeyboardButton('Request location'))->setRequestLocation(true)]);
            $replyMarkup->setResizeKeyboard(true)->setOneTimeKeyboard(true);
            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($replyMarkup);
                        return $method;
                        break;
                    case Chat::TYPE_GROUP:
                    case Chat::TYPE_SUPERGROUP:
                        printf("  Sending answer to a chat %s\n", $message->chat->id);
                        $method = new SendMessage($message->chat->id, $message->text);
                        $method->setReplyToMessageId($message->messageId);
                        $method->getReplyMarkup()->setSelective(true);
                        return $method;
                        break;
                }
            }
        } elseif (!empty($message->contact)) {
            printf(" Contact received:");
            $dump = print_r($message->contact, true);
            echo $dump;
            $method = new SendMessage($message->chat->id, "Contact received:\n{$dump}");
            $method->setReplyMarkup(new ReplyKeyboardHide());
            return $method;
        } elseif (!empty($message->location)) {
            printf(" Location received:");
            $dump = print_r($message->location, true);
            echo $dump;
            $method = new SendMessage($message->chat->id, "Location received:\n{$dump}");
            $method->setReplyMarkup(new ReplyKeyboardHide());
            return $method;
        }
    }
    return null;
}