Как стать автором
Обновить

Telegram-клиент на PHP (и получение сообщений с помощью MadelineProto)

Время на прочтение2 мин
Количество просмотров39K
Решив заняться бессовестным копипастом (а точнее его автоматизацией) постов с чужого Telegram-канала в свой, я первым делом полез в документацию по телеграм-ботам. Но как выяснилось, боты не только не имеют методов для получения сообщений, их просто-напросто нельзя добавить в чужой канал.

Решение нужно было на PHP и следующий час был потрачен на его поиск. Удивительно, как об этом мало информации (хотя нет, не удивительно… кто вообще пишет такое на PHP...). В общем, дорога со StackOverflow привела к MadelineProto. На библиотеку довольно мало ссылок в сети.

Что такое Madeline? Это Telegram-клиент на PHP, предоставляющий методы для работы как от имени пользователя, так и от имени бота. Цель статьи — в первую очередь сократить путь поиска Madeline и привлечь к нему внимание. Также интересно узнать у хабравчан что есть подобное на других ЯП?

Ну и разумеется, опубликовать для примера кусочек кода, который решил мою задачу:

//Подключение Madeline с гитхаба
if (!file_exists(__DIR__ . '/madeline.php')) {
	copy('https://phar.madelineproto.xyz/madeline.php', __DIR__ . '/madeline.php');
}
include __DIR__ . '/madeline.php';

$MadelineProto = new \danog\MadelineProto\API('session.madeline');
$MadelineProto->start();

$me = $MadelineProto->get_self();

\danog\MadelineProto\Logger::log($me);

/* Получим историю сообщений */
$messages = $MadelineProto->messages->getHistory([
        /* Название канала, без @ */
	'peer' => 'chatname', 
	'offset_id' => 0, 
	'offset_date' => 0, 
	'add_offset' => 0,
	'limit' => 20,
	'max_id' => 9999999, 
        /* ID сообщения, с которого начинаем поиск */
	'min_id' => $lastid, 
]);

/* Сообщения, сортировка по дате (новые сверху) */
$messages = $messages['messages'];
foreach(array_reverse($messages) as $i => $message){
        /* Шлем сообщение на свой канал */
        $MadelineProto->messages->sendMessage([
              'peer' => 'mychatname',
              'message' => $message['message']
        ]);
}



UPD от mopkob: У проекта есть активное комьюнити: рускоязычное @pwrtelegramgroupru и интернациональное @pwrtelegramgroup.
Теги:
Хабы:
Всего голосов 18: ↑14 и ↓4+10
Комментарии19

Публикации

Истории

Работа

PHP программист
195 вакансий

Ближайшие события

3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн