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

Комментарии 14

«Но можно написать bot, который будет поступающие к нему сообщения отправлять куда нужно, чтобы их обработать и вывести на сайт. А можно воспользоваться готовым»

Это точно русский?
Жаров, перелогиньтесь.

А почему нет?

Вот, создавая такие туториалы, вы невольно проводите реверс-инжениринг первого предложения из этого поста :)

Вы о том, что РКН заблокирует сайт journali.st?

Самый простой и эффективный способ — найдите бесплатный хостинг за бугром, посадите туда простенький php-proxy скрипт из пяти строчек, и через него обращайтесь к journali.st из своего виджета. Я так собираю rss с заблокированных сайтов.
Хочу сказать. что пост перенесен администрацией в хаб «Я пиарюсь» как рекламный, но я не имею никакого отношения к авторам данного телеграм-бота.

Просто поделился интересной программой.
Зачем такие сложности с ботами и чужими сервисами, когда телеграмм предоставляет апи доступа к постам в каналах?
Создаете свой канал и тяните себе jsом или обрабатываете на сервере:
t.me/канал/ид_поста?embed=1
Пример за пять минут:
var urls = ['https://t.me/lentach/27600?embed=1', 'https://t.me/lentach/27601?embed=1', 'https://t.me/lentach/27602?embed=1'];
Promise.all(urls.map(url =>
    fetch(url).then(resp => resp.text())
)).then(texts => {
	let parser = new DOMParser();
	let parsedHtml = parser.parseFromString(texts, 'text/html');
	let bodyText = parsedHtml.getElementsByClassName("tgme_widget_message_text");
    for (let i = 0; i < bodyText.length; i++) {
  		console.log(bodyText[i].innerHTML);
	}
})

Output:
В Москве представили первый дом по программе реновации, и он уже готов к заселению<br><br>Фото: <a href="http://lentach.media/6c60" target="_blank" rel="noopener">http://lentach.media/6c60</a>
Киевский Совет одобрил снос храма Московского патриархата, который находится на месте первого каменного храма Киевской Руси<br><br><a href="http://lentach.media/f234" target="_blank" rel="noopener">http://lentach.media/f234</a>
Под авиаудар американских сил в Сирии попали российские наёмники, сообщают иранские СМИ<br><br><a href="http://lentach.media/c660" target="_blank" rel="noopener">http://lentach.media/c660</a>


Прикручиваете оффсеты, валидацию ответа еще за полчаса и вот вам альтернатива сторонним сервисам
В принципе, тоже вариант, в идеале даже лучший, только вопросы:
1. как узнать id крайнего поста в канале?
2. если это js код для клиента, то как с Access-Control-Allow-Origin ??? Сервер t.me не отдает данные всем подряд
3. реализация real-time апдейта канала у клиента по мере поступления сообщений в канал

Получается, понадобится делать на своем сервере прокси канала и самому реализовывать его динамичный апдейт у клиентов. Не полчаса.
Да, пожалуй, погорячился по поводу получаса.
1. Тут придется воткнуть костыль и опрашивать на +10/20 айдишников в большую сторону от последнего успешного и где-нибудь сохранить
2. cors proxy
3. setInterval
Я уже думал на эту тему, относительно примера от hMartin, для своего инлайн бота
На тот момент когда думал, ничего дельного в голову не пришло, а сейчас вот думаю, что методом дихотомии вполне себе сносно можно определить id крайнего поста в канале.
Простым чекингом с потолка взятого id можно найти последний с относительно небольшими затратами ресурсов серверной части.
Например:
1. чекаем достаточно большой id, пусть будет 100к t.me/lentach/100000
видим, что ссылки не существует, поста с таким id нет
2. Делим пополам, чекаем t.me/lentach/50000
аналогичная ситуация
3. Делим пополам, чекаем t.me/lentach/25000
а вот по этой ссылке пост уже есть, проверяем дальше
4. t.me/lentach/37500
Поста снова нет, снова берем половину между тем где было и где нет 25к и 37.5к
5. t.me/lentach/31250
Снова попали — думаю смысл ясен: делим пополам пока разница между верхней и нижней границей больше одного, в остатке получим точный id, при старте с id в 100k, нам потребуется 17 итераций (вроде), простого деления на 2 и проверки кода http, что для серверной части раз в какое то время совсем даже не сложная задача. Записываем last_id в файл или базу — профит.
1. ну, не 10/20, а пока не дойдешь до крайнего
в любом случае, это, наверное, единственный вариант отвеббить свой телеграм-канал
спасибо
Здраствуйте.
Скажите пожалуйста, почему вот уже больше месяца не работает Journalist?
хнык… не подскачите альтернативу?
Сам искал альтернативное решение и нашел сервис виджетов для телеграм канала «т.website»
Использую около недели, вроде работает.
В идеале хостить у себя скрипт виджета, но, как описали выше, его не так просто и создать…

Это же просто iframe web канала.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации