Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
6 / 6 / 2
Регистрация: 27.06.2019
Сообщений: 138

Как запустить телеграм бота на php

30.06.2022, 18:24. Показов 702. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть опыт создания бота на node js, хочу научиться делать ботов на php. Нахожу адекватные примеры(например, https://habr.com/ru/company/ne... og/326174/ ) . Также есть опыт создания простых сайтов с php, поэтому точно знаю, что сервер php в моем домене есть.

Но мой бот ни в какую не работает, я вижу, что телеграм видит мои запросы как от юзера, но со стороны моего сервера php ничего не происходит. В php я слаб.

Привожу пример кода. У меня вопрос, как заставить бота работать, что можно проверить? Я вижу проблему в том, что если я пишу сайт на html+php, то понимаю, что я захожу на сайт, с сайта посылается запрос, php отрабатывает. Но как оно всё работает, если мне не надо заходить? Кто инициирует запуск? Указанную в коде библиотеку подключил.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
    include('vendor/autoload.php'); //Подключаем библиотеку
    use Telegram\Bot\Api; 
 
    $telegram = new Api('20599878205643:AAFyd5OVwXO9gP5qNI1SKbDwzk0e-frcx38'); //Устанавливаем токен, полученный у BotFather
 
        $result =  'https://api.telegram.org/bot{token}/getUpdates'.format(token=20599878205643:AAFyd5OVwXO9gP5qNI1SKbDwzk0e-frcx38)); //Передаем в переменную $result полную информацию о сообщении пользователя
    
    $text = $result["message"]["text"]; //Текст сообщения
    $chat_id = $result["message"]["chat"]["id"]; //Уникальный идентификатор пользователя
    $name = $result["message"]["from"]["username"]; //Юзернейм пользователя
    $keyboard = [["Последние статьи"],["Картинка"],["Гифка"]]; //Клавиатура
 
    if($text){
         if ($text == "/start") {
            $reply = "Добро пожаловать в бота!";
            $reply_markup = $telegram->replyKeyboardMarkup([ 'keyboard' => $keyboard, 'resize_keyboard' => true, 'one_time_keyboard' => false ]);
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]);
        }elseif ($text == "/help") {
            $reply = "Информация с помощью.";
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply ]);
        }elseif ($text == "Картинка") {
            $url = "https://68.media.tumblr.com/6d830b4f2c455f9cb6cd4ebe5011d2b8/tumblr_oj49kevkUz1v4bb1no1_500.jpg";
            $telegram->sendPhoto([ 'chat_id' => $chat_id, 'photo' => $url, 'caption' => "Описание." ]);
        }elseif ($text == "Гифка") {
            $url = "https://68.media.tumblr.com/bd08f2aa85a6eb8b7a9f4b07c0807d71/tumblr_ofrc94sG1e1sjmm5ao1_400.gif";
            $telegram->sendDocument([ 'chat_id' => $chat_id, 'document' => $url, 'caption' => "Описание." ]);
        }elseif ($text == "Последние статьи") {
            $html=simplexml_load_file('http://netology.ru/blog/rss.xml');
            foreach ($html->channel->item as $item) {
         $reply .= "\xE2\x9E\xA1 ".$item->title." (<a href='".$item->link."'>читать</a>)\n";
            }
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'disable_web_page_preview' => true, 'text' => $reply ]);
        }else{
            $reply = "По запросу \"<b>".$text."</b>\" ничего не найдено.";
            $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode'=> 'HTML', 'text' => $reply ]);
        }
    }else{
        $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Отправьте текстовое сообщение." ]);
    }
?>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.06.2022, 18:24
Ответы с готовыми решениями:

Как правильно прописать ник пользователя в ответном сообщении от бота Телеграм PHP
Всем привет. Как решить проблему, когда в теле ответного сообщения присутствует ник с нижним подчеркиванием и из-за этого ответ даже не...

Как запустить телеграм бота, используя вебхуки (python2.7+flask)?
Здравствуйте! Взял код из примера, но выползает ошибка, может кто подсказать как исправить? Пример Traceback (most recent call last): ...

Не получается запустить телеграм-бота
Всем привет. Первый раз пробую что-либо писать на питоне. Пытаюсь запустить простейшего телеграм-бота с использованием библиотеки telebot....

1
6 / 6 / 2
Регистрация: 27.06.2019
Сообщений: 138
01.07.2022, 16:06  [ТС]
Нашел хороший пример, который удалось повторить

1. Ставишь composer, далее переходишь в папку с проектом через командную строку (cd c://bot - пример), выполняешь код:
"composer require guzzlehttp/guzzle".
2. Создаешь init.php, в этой папке, с содержимым:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?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. Что бы запустить его, там же в командной строке запускаешь файл:
Code
1
php init.php
Там же в консоли увидишь Id пользователя и его юзернейм)
Вот такой не много туповаты пример, но работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.07.2022, 16:06
Помогаю со студенческими работами здесь

Запустить бота в телеграм через другой файл
У меня есть файл main.py и есть сам bot.py, как можно из файла main.js запустить bot.py в котором написан бот для телеграма? А то у меня...

PHP Бота телеграм
Ребята нужна помощь Скрипт установлен работает, ну не работает пару функций бота нужно пересмотреть исходняк дам весь доступ к...

Как защитить телеграм бота?
Вот чтобы злоумышленники не могли организовать множественные запросы тем самым не смогли положить бота. Выслушаю хотя бы мнение или идею....

Как по-иному передать токен телеграм бота?
import config import telebot token =&quot;**************&quot; bot = telebot.TeleBot(config.token) @bot.message_handler(content_types=)...

Как интегрировать словарь в json в телеграм бота на python
elif message.text == 'Ссылки': kb_links = telebot.types.InlineKeyboardMarkup() for text, url in...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru