Ответы пользователя по тегу Боты
  • Как понять в каком состоянии или группе состояний находится телеграм бот?

    @ambal245
    Как выход записывать в БД значение. После нажатие на кнопку пользователем проверять значение и отправлять нужное сообщение.
    Ответ написан
    Комментировать
  • Не выводятся кнопки в ряд php?

    @ambal245
    $url = "https://qna.habr.com/q/1093980";
    $buttons[] = $this->buildInlineKeyBoardButton('Кнопка 1', '1');
    $buttons[] = $this->buildInlineKeyBoardButton('Кнопка 2', '2');
    $buttons[] = $this->buildInlineKeyBoardButton('Кнопка 3', '3');
    $buttons[] = $this->buildInlineKeyBoardButton('Кнопка 4', '', $url );
    $buttons[] = $this->buildInlineKeyBoardButton('Кнопка 5', '5');
    // разбиваем кнопки по рядам
    array_chunk($buttons, 3); // 3 кнопки в ряду
    
    public function buildInlineKeyboardButton($text, $callback_data = '', $url = '')  {
            // рисуем кнопке текст
            $replyMarkup = [  'text' => $text,  ];
            // пишем одно из обязательных дополнений кнопке
            if ($url != '') { 
                 $replyMarkup['url'] = $url;
            } elseif ($callback_data != '') {
                 $replyMarkup['callback_data'] = $callback_data;
            }
            // возвращаем кнопку
            return $replyMarkup;
        }
        public function buildInlineKeyBoard(array $options)  {
            // собираем кнопки
            $replyMarkup = [
                'inline_keyboard' => $options,  ];
            // преобразуем в JSON объект
            $encodedMarkup = json_encode($replyMarkup, true);
            // возвращаем клавиатуру
            return $encodedMarkup;
        }
    Ответ написан
    Комментировать
  • Как записать данные в переменную из GET запроса?

    @ambal245
    Эти данные приходят в чат бота с вами, поэтому мы сможем их прочитать и записать куда угодно. Примерно так будет на php
    $data = json_decode(file_get_contents('php://input'), true);
    if (array_key_exists("message", $data)) {
         $text = $data['message']['text']; // здесь полученный текст ID_USER=66544456?Prime=3
          // парсим текст $param[0] -  id_user $param[1]- prime
         $param = explode('?', $text);
         // если нужны значения отдельно, то еще раз парсим ID_USER=66544456
         // $user = explode('=', $param[0]);
         // записываем в БД
         $insert = $this->pdo->prepare("INSERT INTO user SET user_id = ?, prime = ?");
         $insert->execute(['$param[0], $param[1]]);
    }
    Ответ написан
    Комментировать
  • Как использовать editMessageMedia в телеграмм боте для изменения изображёний?

    @ambal245
    Формулирование все также, только фото нужно передавать в JSON-сериализованном ввиде.
    $photo = [  'type'=> 'photo',
                       'media' => 'здесь параметры картинки file_id или url',
                       'caption' => 'ТЕКСТ',
                       'parse_mode' => 'html'
                            ]
    $fields = ['chat_id' => 'id чата ', 
                    'message_id' => 'message_id',  //id сообщения 
                    'media' => json_encode($photo), 
                    'reply_markup' => json_encode($buttons)]; // если есть кнопки
    // отправляем методом CURL
    $ch = curl_init('https://api.telegram.org/bot' . $token . '/editMessageMedia');
            curl_setopt_array($ch, array(
                CURLOPT_POST => count($fields),
                CURLOPT_POSTFIELDS => http_build_query($fields),
                CURLOPT_SSL_VERIFYPEER => 0,
                CURLOPT_RETURNTRANSFER => 1,
                CURLOPT_TIMEOUT => 10
            ));
            $r = json_decode(curl_exec($ch), true);
            curl_close($ch);
            return $r;
    Ответ написан
    Комментировать
  • Бот в телеграм отправляет сообщения о покупке только одному пользователю. Как решить?

    @ambal245
    Здесь может ошибка быть в id получателя. Если из чата (канала) посылается ответ, то нужно использовать from.id вместо chat.id
    Ответ написан
  • Есть удачные примеры бота в Telegram для продажи товара (online-магазин)?

    @ambal245
    Например этот бот @erovita_bot интернет-магазина «Эровита». Реализован на перепродаже заявок в официальный магазин.
    Ответ написан
    Комментировать
  • Как взять данные из Inline кнопки телеграм боте?

    @ambal245
    Задать параметр в кнопке callback_query и после Отловить нажатие в $data['callback_query']['data'] и выводить нужную информацию.
    Ответ написан
    Комментировать
  • Кнопка в телеграм боте на php?

    @ambal245
    Перед отправки сообщения нужно проверить существования юзера, после распарсить полученную команду /start. При запуске бота по вашей ссылке в переменную $data['message']['text'] передается следующие параметры: /start worksheet3de89191
    $data['message']['text'] => '/start worksheet3de89191'

    Удалив командой str_replace параметр (/start ) получите данные которые можете использовать в дальнейшем для перенаправления на заполнения анкеты.
    Ответ написан
    Комментировать
  • Как в текст вставить значение переменной first_name в телеграмм боте?

    @ambal245
    Для начало нужно разобрать на переменные то что пришло, а после использовать. Примерная реализация выглядит так:
    $data = json_decode(file_get_contents('php://input'),true);
    $text = $data['message']['text'];
    $chat = $data['message']['chat']['id'];
    $first_name = $data['message']['from']['first_name'];
      if ($text){
             if (strtolower($text) == "/start") $bot->reply($chat, " Здравствуй {$first_name} ");
    }
    Ответ написан
    Комментировать