TelegramBot / Api

Native PHP Wrapper for Telegram BOT API
MIT License
1.07k stars 324 forks source link

field "input_message_content" must be of type Object #275

Closed glavvred closed 3 years ago

glavvred commented 3 years ago

am i doing something wrong? just trying to send inline bot results, but getting this weird error. input_message_content is in fact object type at least before answerInlineQuery

        $bot->InlineQuery(function ($query) use ($bot){
            //... get user code skipped
                $photo = new Photo($user->id, $user->avatar, $user->avatar);
                $imc = new InputMessageContent();
                $imc->message_text = $user->id;
                $photo->setInputMessageContent($imc);
            try {
            $bot->answerInlineQuery($query->getId(), $res);
            } catch (\TelegramBot\Api\Exception $exception){
            }
        });
MyZik commented 3 years ago

Текст ошибки какой?

glavvred commented 3 years ago

Bad Request: field "input_message_content" must be of type Object

Текст ошибки какой?

MyZik commented 3 years ago

Ну так ты создаёщь пустой объект InputMessageContent. В документации чётко написано, что использовать нужно.

https://core.telegram.org/bots/api#inputmessagecontent

glavvred commented 3 years ago

да, но вроде как я его заполняю обязательным полем message_text? или нужно сделать что то вроде

use TelegramBot\Api\Types\Inline\InputMessageContent\Text; $photo = new Photo($user->id, $user->avatar, $user->avatar); $imc = new InputMessageContent(); $text = new Text('user.'.$user->id); $imc->input_message_content = $text; или есть какой то метод для установки?

хоть какой то пример был бы очень полезен, тыкаюсь как слепой котенок (

glavvred commented 3 years ago

вроде подебил я эту штуку. $bot->InlineQuery(function ($query) use ($bot){ ...
$photo = new Photo($user->id, $user->avatar, $user->avatar); $text = new Text('/rating '.$user->id); $text->setDisableWebPagePreview(true); $photo->setInputMessageContent($text); $photo->setTitle($user->self_name ? $user->self_name : $user->name); $bot->answerInlineQuery($query->getId(), $res);

похоже?

MyZik commented 3 years ago
Bildschirmfoto 2020-08-28 um 22 57 58

Используй одно из этого, если тебе нужен текст, то InputTextMessageContent

glavvred commented 3 years ago

да, там импорт просто выше, не попал в пасту. спасибо!