Ответы пользователя по тегу Боты
  • Вызов команд Телеграм-бота при сканировании QR-кодов?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Наверное единственный работающий вариант это https://core.telegram.org/bots#deep-linking
    Ответ написан
    Комментировать
  • Как после нажатия кнопок в сообщении от Telegram-Bot'а скрыть их?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Разобрался и вот небольшой примерчик (вырезка):

    $telegram = new Telegram\Bot\Api('XXXXXXXXXXXXXXXXXXXX');
    $update = $this->telegram->getWebhookUpdates();
    $update = json_decode($this->update, true);
    
    $keyboard = Keyboard::make()->inline()->row(Keyboard::inlineButton(['text' => 'One more?','callback_data' => '/random']));
    
    $telegram->editMessageText([
        'chat_id' => $update['callback_query']['message']['chat']['id'],
        'message_id' => $update['callback_query']['message']['message_id'],
        'text' => 'Ответочка',
        'reply_markup' => $keyboard,
        'parse_mode' => 'markdown',
    ]);
    Ответ написан
    Комментировать
  • Как обработать нажатие на кнопку клавиатуры бота, созданном на Telegram Bot API - PHP SDK?

    @easycode Автор вопроса
    не боюсь задавать глупые вопросы ))
    Как я понял в версии 2.2 этой библиотеки можно использовать только обычные текстовые кнопки без callback_data - для передачи которого нужно использовать inline кнопки.

    1) Нужно обновится до dev-версии, если через composer то вот так:
    composer require irazasyed/telegram-bot-sdk:dev-master

    2) Далее код несколько меняется:
    <?php
    
    use Telegram\Bot\Commands\Command;
    use Telegram\Bot\Keyboard\Keyboard;
    
    $telegram = new Telegram\Bot\Api('MY_KEY'); 
            
    $update = $telegram->getWebhookUpdates();
    
    // данные сообщения в зависимости от callback_query
    if ( isset($this->update['callback_query'])) {
        $message = $update['callback_query'];
    } else {
        $message = $update;
    }
    
    $chatId = $message['message']['chat']['id'];
    
    // правильно формируем клавиатуру:
    $keyboard = [
        [
            Keyboard::inlineButton(['callback_data'=>'/butt1','text'=>'Кнопка 1']),
            Keyboard::inlineButton(['callback_data'=>'/buut2','text'=>'Кнопка 2'])
        ]
    ];
    
    $reply_markup = $telegram->replyKeyboardMarkup([ 
        // 'keyboard' => $keyboard, // вместо этого используем:
        'inline_keyboard' => $keyboard,
        'resize_keyboard' => true, 
        'one_time_keyboard' => false 
    ]);
    
    
    // если нажали кнопку:
    if ( isset($this->update['callback_query'])) {
    	$telegram->sendMessage(array(
    	  'chat_id' => $chatId,
    	    'text' => "Вы нажали на кнопку с кодом: " . $message['data'], // именно в $message['data'] - будет то что прописано у нажатой кнопки в качестве callback_data
    	    'reply_markup' => $reply_markup,
    	));
    } else {
    	$telegram->sendMessage(array(
    	  'chat_id' => $chatId,
    	    'text' => 'Нажмите на одну из кнопок:',
    	    'reply_markup' => $reply_markup,
    	));
    }


    Может кому-нибудь еще пригодится )
    Ответ написан
    Комментировать