Комментарии 15
«Но можно написать bot, который будет поступающие к нему сообщения отправлять куда нужно, чтобы их обработать и вывести на сайт. А можно воспользоваться готовым»
Это точно русский?
Это точно русский?
Вот, создавая такие туториалы, вы невольно проводите реверс-инжениринг первого предложения из этого поста :)
Хочу сказать. что пост перенесен администрацией в хаб «Я пиарюсь» как рекламный, но я не имею никакого отношения к авторам данного телеграм-бота.
Просто поделился интересной программой.
Просто поделился интересной программой.
Зачем такие сложности с ботами и чужими сервисами, когда телеграмм предоставляет апи доступа к постам в каналах?
Создаете свой канал и тяните себе jsом или обрабатываете на сервере:
t.me/канал/ид_поста?embed=1
Пример за пять минут:
Output:
Прикручиваете оффсеты, валидацию ответа еще за полчаса и вот вам альтернатива сторонним сервисам
Создаете свой канал и тяните себе 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. как узнать id крайнего поста в канале?
2. если это js код для клиента, то как с Access-Control-Allow-Origin ??? Сервер t.me не отдает данные всем подряд
3. реализация real-time апдейта канала у клиента по мере поступления сообщений в канал
Получается, понадобится делать на своем сервере прокси канала и самому реализовывать его динамичный апдейт у клиентов. Не полчаса.
Да, пожалуй, погорячился по поводу получаса.
1. Тут придется воткнуть костыль и опрашивать на +10/20 айдишников в большую сторону от последнего успешного и где-нибудь сохранить
2. cors proxy
3. setInterval
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 в файл или базу — профит.
На тот момент когда думал, ничего дельного в голову не пришло, а сейчас вот думаю, что методом дихотомии вполне себе сносно можно определить 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?
хнык… не подскачите альтернативу?
Скажите пожалуйста, почему вот уже больше месяца не работает Journalist?
хнык… не подскачите альтернативу?
А как-то можно вывести публичный чат на сайт да еще и синхронизировать сообщения?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Вывод Telegram-канала на свой вебсайт