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

Sign in to follow this  
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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this