VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Предисловие
Как-то захотелось для немногочисленных пользователей своего сайта BLANCOS.INFO сделать информационный канал и публичную группу в мессенджере Telegram, чтобы все желающие могли либо просто получать оповещение о появлении свежих новостей на сайте либо еще и обсуждать их в группе (сидеть на форуме "булки" с мобильного не всем нравится). Вобщем, повышаем для пользователей комфортность с помощью Telegram:
Исходные данные
- PHP от 5.1, думаю сойдет. Проверено на 5.3.3 и 5.5.38.
- vBulletin 3.8. Хотя тут не особо важно - от форума нужно только из БД получить ID темы, чтобы сформировать ссылку.
- Скорее всего понадобиться СЕО модуль от хака TwitterBot, чтобы форум научился отдавать META и OG теги. Не уверен, что это обязательно, но вряд ли Telegram сможет красиво отобразить ссылку в чате без мета-тегов image, description и проч.
1.1. Добавляем в контакты телеграмма бота BotFather (в поиске контактов вводим @BotFather).
1.2. Чтобы посмотреть список доступных команда вводим в чате с ним команду /help.
Чтобы создать бота вводим команду: /newbot
На приглашение системы вводим название для нового бота. Например, Блнкс_тст2.
Затем, если название было выбрано корректно, вас попросят выбрать username для вашего бота, но чтобы в концы было слово "bot" или "_bot".
Например, bltst2_bot.
Если username выбран корректно, вам отобразится сообщение, где вы увидите HTTP API. Например: 50922963:AAFXfR8GqAUG2UKF-y_Hq5hRLiocuYpSI
Также с помощью BotFather вы можете установить для своего бота описание, фото и проч.
1.3. В чате с @BotFather вводим /setjoingroups, и выставляем в значение Enabled разрешения добавлять бота в группы. Потом это разрешение можно выключить.
1.4. Убеждаемся, что бот создался нормально, введя такой запрос:
, где между словом bot и /getMe прописан полученный ранее HTTP API.
В ответе помимо свойств вашего бота должно быть написано "ok":true.
1.5. Если у вашего сайта еще нет публичного Канала или публичного Группового чата, то создаем его. После этого добавляем в список админов канала/чата вашего бота с правами на создание сообщений. Для этого заходим в настройки канала/чата, нажимаем на ссылку "administrators", в появившемся окне нажимаем "Add administrators" и ищем нашего бота введя, например: @bltst2_bot. Даем права на публикацию сообщений.
1.6. Для работы скрипта нам понадобится информация о вашем канале/чате: его username или id. Чтобы их узнать, в чате пишем команду /my_id
После этого в браузере открываем следующую ссылку, заменив между словами bot и /getUpdates значение HTTP API на свое из п.1.2:
2.1. Сначала нужно в таблице THREAD создать колонку telegramposting с значением по умолчанию = 0. Например, так:
Code:
ALTER TABLE thread ADD telegramposting INT(1) NOT NULL DEFAULT '0' AFTER telegramposting;
2.2. Теперь, выставим всей этой колонке значение = 1, чтобы избежать публикации в Телеграмм старых сообщений. Например, так:
Code:
UPDATE thread SET telegramposting = 1 WHERE telegramposting <> 1;
2.3. Сейчас для нескольких самых свежих тем в интересующих нас разделах выставим значение telegramposting = 0, чтобы на них проверить работу скрипта. Например, так:
Code:
UPDATE thread SET telegramposting3 = 0
WHERE forumid = 2
ORDER BY threadid DESC
LIMIT 2;
3.1. Скачиваем и распаковываем архив с PHP-скриптом из вложения или по этой ссылке с Yandex-диска на ваш Web-сервер. В папке со скриптом должен быть каталог "log" с правами 777, куда скрипт будет писать лог своей работы (логи хранятся только за 3 суток). Хотя если вам не нужно логирование, можете пройтись по скипту и закомменировать команды, записывающие результаты в файл.
Для повышения безопасности в каталоге "log" положите файл .htaccess с таким содержимым (есть в архиве):
Code:
RemoveHandler .phtml
RemoveHandler .php
RemoveHandler .php3
RemoveHandler .php4
RemoveHandler .php5
RemoveHandler .cgi
RemoveHandler .exe
RemoveHandler .pl
RemoveHandler .asp
RemoveHandler .aspx
RemoveHandler .shtml
<Files ~ "\.php|\.phtml|\.cgi|\.exe|\.pl|\.asp|\.aspx|\.shtml">
Order allow,deny
Deny from all
3.2. Скрипт имеет два режима запуска: preview и send. Preview только покажет какие данные подходят для отправки. Send выполнит отправку.
,где forum_id - список (через запятую) форумов, в которых искать темы для отправки; amount - количество записей, которые искать в БД форума для отправки за раз; chat_id - это список (через запятую) username'ов или id (id перечисляются со знаком минус, например, -1001216081794) ваших чатов из пункта 1.6. botToken - HTTP API токен, полученный в пункте 1.2.
В результате должно вывести инфу (threadname в работе с Telegram не участвует, но выводится только для информативности), например:
Quote:
--- Data from forum: ---
array(2) {
[0]=>
array(2) {
["threadid"]=>
string(4) "9990"
["threadname"]=>
string(105) ""АПОЭЛ" - "Реал Мадрид". Матч рассудит Артур Диас"
}
[1]=>
array(2) {
["threadid"]=>
string(4) "9991"
["threadname"]=>
string(121) "Отец Пепе о «Реале»: «Подобные клубы выжимают из игроков все соки»"
}
}
--- Data from forum end. ---
------------ START posting to @bltest2,@blbltest------------
Thread ID 9988: Зинедин Зидан: «Мы играли хорошо, но нам не хватило забитого мяча» was SENT to telegram @bltest2.
Thread ID 9988: Зинедин Зидан: «Мы играли хорошо, но нам не хватило забитого мяча» was SENT to telegram @blbltest.
Thread ID 9989: Диего Симеоне: «Мы могли выиграть, могли и проиграть» was SENT to telegram @bltest2.
Thread ID 9989: Диего Симеоне: «Мы могли выиграть, могли и проиграть» was SENT to telegram @blbltest.
------------ END posting to @bltest2,@blbltest ------------
3.3. Смотрим результат в Чате или Канале Telegram:
3.4. Добавляем скрипт в cron вашего сервера. В данном случае он будет отрабатывать каждые 15 мин с 10:00 утра до 22:59:
P.S. Любые предложение по улучшению работы скрипта приветствуются. За малограмотность в написании PHP-кода прошу извинять, но 100% работает это факт.
P.S.S. Отдаю эту работу бесплатно и без обязательств, но был бы рад, если после внедрения на своем форуме вы сделаете на нём маленькую благодарственную заметку с ссылкой на сайт BLANCOS.INFO. Тут все от вашей Совести и благодарности зависит)))