Ответы пользователя по тегу Telegram
  • Long polling - готовые решения?

    @Number_11
    1. Ставишь composer, далее переходишь в папку с проектом через командную строку (cd c://bot - пример), выполняешь код:
    "composer require guzzlehttp/guzzle".
    2. Создаешь init.php, в этой папке, с содержимым:
    <?php
    // Инклуды)
    use GuzzleHttp\Client;
    include('vendor/autoload.php');
    include('telegramBot.php');

    //Получаем данные
    $telegramApi = new TelegramBot();

    // Вычный цикл, обработчик
    while (true) {
    sleep(2);
    $updates = $telegramApi->getUpdates(); // Получаем обновление, методом getUpdates
    foreach ($updates as $update){
    if (isset($update->message->text)) { // Проверяем Update, на наличие текста

    $text = $update->message->text; // Переменная с текстом сообщения
    $chat_id = $update->message->chat->id; // Чат ID пользователя
    $first_name = $update->message->chat->first_name; //Имя пользователя
    $username = $update->message->chat->username; //Юзернейм пользователя

    print_r($chat_id);
    print_r($username);

    if ($text == '/start'){ // Если пользователь подключился в первый раз, ему поступит приветствие
    $telegramApi->sendMessage($chat_id, 'Привет'. ' ' . $first_name . '!'); //Приветствует Пользователя
    } else {
    $telegramApi->sendMessage($chat_id, $first_name . '! Как дела?' ); // Спрашивает как дела

    }
    }
    }
    }

    3. Создаешь telegramBot.php, в этой папке, вот содержимое:
    <?php
    // Подключение библиотеки
    use GuzzleHttp\Client;
    use Telegram\Api;

    class TelegramBot
    {
    protected $token = "ТОКЕН_БОТА";
    protected $updateId;
    // Функция собирает URL
    protected function query($method, $params = [])
    {
    $url = "https://api.telegram.org/bot";
    $url .= $this->token;
    $url .= "/" . $method;
    if (!empty($params))
    {
    $url .= "?" . http_build_query($params);
    }

    $client = new Client([
    'base_uri' => $url
    ]);

    $result = $client->request('GET');

    return json_decode($result->getBody());
    }

    // Получаем обновления
    public function getUpdates()
    {
    $response = $this->query('getUpdates', [
    'offset' => $this->updateId + 1
    ]);
    if (!empty($response->result)) {
    $this->updateId = $response->result[count($response->result) -1]->update_id;
    }
    return $response->result;
    }

    // Отправляем сообщения
    public function sendMessage($chat_id, $text)
    {
    $response = $this->query('sendMessage',[
    'chat_id' => $chat_id,
    'text' => $text
    ]);
    return $response;
    }

    }

    4. Что бы запустить его, там же в командной строке запускаешь файл:
    php init.php

    Там же в консоли увидишь Id пользователя и его юзернейм)
    Вот такой не много туповаты пример, но работает.
    Ответ написан
    2 комментария