CMS DataLife Engine - Система управления сайтами

filippst

Автопостинг новостей в канал Телеграм

Recommended Posts

Уважаемые форумчане!

Возможно ли реализовать идею, когда новость (вступительная часть и картинка к ней) автоматически публикуется в канал телеграм. Наш сайт работает пока еще на пробной версии скрипта: https://omcbs.ru (я так понял по правилам я его должен указать). И перед покупкой хотелось бы как можно больше узнать.

На вордпрес есть специальный плагин с такой возможностью.

Замысел такой:

В редакторе появляется дополнительный флажок (не публиковать же все новости подряд)

Отметили флажок и заголовок с картинкой улетает в заданный канал через заданного бота...

На API ТЛГ реализовал отправку текста, команда простая: <?php fopen("https://api.telegram.org/bot{токен бота}/sendMessage?chat_id={Куда слать (канал или чат)}&text={Текст сообщения}", "") ?>

А вот как прикрутить данную конструкцию, не понимаю. Поиск на форуме проходил по словам автопостинг, телеграм, telegram. Нашел всего два сообщения и в них нет ничего дельного.

Share this post


Link to post
Share on other sites

1. А зачем сайту библиотечной системы что то слать в инстаграмм?
2. Изучаете код добавления новостей, и вставляете ваше "API" как душе угодно, если нужно заводите ещё одну таблицу куда указываете отправлялась ли эта новость уже в телеграмм, что бы после каждого редактирования не дублировалась.

Share this post


Link to post
Share on other sites
4 часа назад, SKYNET74 сказал:

2. Изучаете код добавления новостей

 

6 часов назад, filippst сказал:

Наш сайт работает пока еще на пробной версии скрипта

Много же он изучит в зашифрованных файлах...

 

6 часов назад, filippst сказал:

А вот как прикрутить данную конструкцию, не понимаю

Не потому ли, что все файлы демо версии зашифрованы?

Share this post


Link to post
Share on other sites

Самое элементарное в случае, если у вас демо версия:

1. Создать доп поле telegram

Тип поля: Список

Значение по умолчанию:

botyes|Отправить

botno|Не отправлять

2. Создать файл telegramcron.php с следующим содержимым:

<?php

// Изменить данные
$cronpass = "mypass";
$token = "mytoken";
$channel = "mychannel";
// =====================

if ($_GET['pass'] == $cronpass){
	include ('engine/api/api.class.php');
	
	$result = $db->query("SELECT * FROM " . PREFIX . "_post WHERE xfields LIKE '%botyes%' ORDER BY id ASC");
	$num_rows = $db->num_rows($result);
	if ($num_rows > 0){
		while ( $row = $db->get_array($result) ) {
			$id = $row['id'];
			$text = htmlspecialchars(stripslashes($row['short_story']), ENT_QUOTES, $config['charset'] );
			file_get_contents("https://api.telegram.org/bot$token/sendMessage?chat_id=$channel&text=$text", "");
			$upd_query = $db->query("UPDATE `" . PREFIX . "_post` SET `xfields` = REPLACE(`xfields`, 'botyes', 'botno') WHERE id=$id");
		}
		echo "Success send $num_rows news";
	} else {
		echo "No news for telegrambot";
	}
	
} else {
	die("Hacking attempt");
}

?>

3. Поставить задание cron на выполнение telegramcron.php?pass=mypass с периодичностью 1-30 минут (время по своему желанию)

 

Код не тестировал, написал на скорую руку

 

P.S. Покупайте лицензию, иначе много сообщений в телеграм отправить не сможете, лимит демо версии DLE = 100 новостей.

 

Edited by webair
  • Upvote 1

Share this post


Link to post
Share on other sites
В 11.04.2017 в 00:34, webair сказал:

Самое элементарное в случае, если у вас демо версия:

1. Создать доп поле telegram

Тип поля: Список

Значение по умолчанию:

botyes|Отправить

botno|Не отправлять

2. Создать файл telegramcron.php с следующим содержимым:


<?php

// Изменить данные
$cronpass = "mypass";
$token = "mytoken";
$channel = "mychannel";
// =====================

if ($_GET['pass'] == $cronpass){
	include ('engine/api/api.class.php');
	
	$result = $db->query("SELECT * FROM " . PREFIX . "_post WHERE xfields LIKE '%botyes%' ORDER BY id ASC");
	$num_rows = $db->num_rows($result);
	if ($num_rows > 0){
		while ( $row = $db->get_array($result) ) {
			$id = $row['id'];
			$text = htmlspecialchars(stripslashes($row['short_story']), ENT_QUOTES, $config['charset'] );
			file_get_contents("https://api.telegram.org/bot$token/sendMessage?chat_id=$channel&text=$text", "");
			$upd_query = $db->query("UPDATE `" . PREFIX . "_post` SET `xfields` = REPLACE(`xfields`, 'botyes', 'botno') WHERE id=$id");
		}
		echo "Success send $num_rows news";
	} else {
		echo "No news for telegrambot";
	}
	
} else {
	die("Hacking attempt");
}

?>

3. Поставить задание cron на выполнение telegramcron.php?pass=mypass с периодичностью 1-30 минут (время по своему желанию)

 

Код не тестировал, написал на скорую руку

 

P.S. Покупайте лицензию, иначе много сообщений в телеграм отправить не сможете, лимит демо версии DLE = 100 новостей.

 

Для своего сайта сегодня взял лицензию, буду разбираться. Большое спасибо за пример, есть от чего двигаться дальше.

А по поводу сайта библиотечной системы, то руководство одобрило приобретение скрипта, так что в ближайшее время :)

 

В 10.04.2017 в 17:02, SKYNET74 сказал:

1. А зачем сайту библиотечной системы что то слать в инстаграмм?
2. Изучаете код добавления новостей, и вставляете ваше "API" как душе угодно, если нужно заводите ещё одну таблицу куда указываете отправлялась ли эта новость уже в телеграмм, что бы после каждого редактирования не дублировалась.

Телеграм - не инстаграм :)

Данную фишку хотелось бы реализовать для оперативного и более полного охвата аудитории. Так например не все же постоянно на сайт бегают, а тут раз - пришло уведомление, что новая литература по краеведению или какое мероприятие затевается)

Тем более, что сейчас почти невозможно найти людей, не использующих социальные сети и службы мгновенных сообщений...

 

 

Share this post


Link to post
Share on other sites

Скрипт проверил, работает :)

Сейчас изучаю код на вывод новостей. (купил скрипт для своего личного сайта, буду переезжать с джумлы).

Я веб программирование только недавно начал осваивать, до этого почти 10 лет программы на форточки писал)

 

Share this post


Link to post
Share on other sites

скрипт не работает. Я переписал его. Единственное что да он может посылать сообщения

file_get_contents("##############################################################################=$text", "");

проблема в подаче этой ссылки она не принимает текст из переменной выше. Переменная просто не работает.  если вместо $text  писать словами -то будет выводится сообщение как раз это слово. А переменная на отрез не работает.

Share this post


Link to post
Share on other sites
В 18.02.2018 в 05:45, vinurd сказал:

скрипт не работает. Я переписал его. Единственное что да он может посылать сообщения

file_get_contents("##############################################################################=$text", "");

проблема в подаче этой ссылки она не принимает текст из переменной выше. Переменная просто не работает.  если вместо $text  писать словами -то будет выводится сообщение как раз это слово. А переменная на отрез не работает.

Проверяйте, у меня все пошло с первого раза :)

Может ошиблись в тексте?

Share this post


Link to post
Share on other sites
В 17.02.2018 в 20:45, vinurd сказал:

скрипт не работает. Я переписал его. Единственное что да он может посылать сообщения

file_get_contents("##############################################################################=$text", "");

проблема в подаче этой ссылки она не принимает текст из переменной выше. Переменная просто не работает.  если вместо $text  писать словами -то будет выводится сообщение как раз это слово. А переменная на отрез не работает.

Значит, у вас нет новостей, содержащих доп поле telegram с значением botyes, либо в новости отсутствует краткое описание (short story).

Проверьте, правильно ли вы создали доп поля.

 

В 14.04.2017 в 09:36, filippst сказал:

Скрипт проверил, работает :)

Сейчас изучаю код на вывод новостей. (купил скрипт для своего личного сайта, буду переезжать с джумлы).

Я веб программирование только недавно начал осваивать, до этого почти 10 лет программы на форточки писал)

 

Если скрипт купили, значит у вас расшифрованы файлы addnews.php и можно туда внедрить этот скрипт, чтобы при добавлении новости отправлялось, а не по cron

Share this post


Link to post
Share on other sites
6 часов назад, webair сказал:

Значит, у вас нет новостей, содержащих доп поле telegram с значением botyes, либо в новости отсутствует краткое описание (short story).

Проверьте, правильно ли вы создали доп поля.

 

Если скрипт купили, значит у вас расшифрованы файлы addnews.php и можно туда внедрить этот скрипт, чтобы при добавлении новости отправлялось, а не по cron

Тогда придется каждый раз не забывать запиливать код после обновления((( хотя если только инклудом) В данный момент все выполняется в ручную, отказался от крона, просто показал пользователям как выкладывать новости и куда тыкать для публикации в ТГ.

Хотя был бы не против подсказки, как в addnews поставить отсылку материала в ТГ. Вдруг пригодится) Да и ввиду популярности мессенджера, думаю не у меня одного такие запросы будут)

Edited by filippst

Share this post


Link to post
Share on other sites

С выходом 13 версии модуля никто не запилил?

Если для кого актуально - прошу в эту ветку)

Единственное, что нужно продумать запуск скрипта через прокси, поскольку на хостинге в РФ - телеграм вне закона(

Есть некоторые наработки, пока обкатку делаю.

Share this post


Link to post
Share on other sites

У меня реализовано гораздо проще. Сделал бота в телеграмме, который берёт новости из rss-ленты и постит в группе телеграма.

Share this post


Link to post
Share on other sites
В 27.12.2018 в 15:08, filippst сказал:

С выходом 13 версии модуля никто не запилил?

Если для кого актуально - прошу в эту ветку)

Единственное, что нужно продумать запуск скрипта через прокси, поскольку на хостинге в РФ - телеграм вне закона(

Есть некоторые наработки, пока обкатку делаю.

Самый дешевый хостинг вне РФ и через него гонять запросы.

Share this post


Link to post
Share on other sites
В 29.12.2018 в 02:06, webair сказал:

Самый дешевый хостинг вне РФ и через него гонять запросы.

По закону, нам не запрещено использовать мессенджер, но запрещено размещать сайты на зарубежных площадках(

В принципе вариант дельный, но неужели никакого другого выхода не предвидится?

Share this post


Link to post
Share on other sites
1 час назад, filippst сказал:

По закону, нам не запрещено использовать мессенджер, но запрещено размещать сайты на зарубежных площадках(

В принципе вариант дельный, но неужели никакого другого выхода не предвидится?

запрещено или нет, но хостинги в рф блокируют телеграм.

в гугле напишите telegram posting. найдётся куча решений, даже те, что не нуждаются в движке DLE. как платные, так и бесплатные решения

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now