Пример использования бота, который отслеживает новостные ленты. После сообщения выводятся кнопки с подсчетом голосов.
Пример использования системы Мажордомо для ведения новостных лент. Следить будет за RSS потоком новостей.
Устанавливаем модуль "Каналы RSS". Прописываем необходимые новостные ленты.
Создаем сценарий rss_tlg
/*
$params['URL'] --link
$params['TITLE'] -- title
$params['BODY'] -- body
$params['CHANNEL_ID'] -- channel ID
$params['CHANNEL_TITLE'] -- channed title
*/
$chat_id='-1001484123774'; //канал majordomo_feed
$plus = json_decode('"'.'\ud83d\udc4d'.'"');
$minus = json_decode('"'.'\ud83d\udc4e'.'"');
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$texxt=$params['URL'];
$count_row = 2;
$option = array( array($telegram_module->buildInlineKeyboardButton("0 ".$plus,"","cb_vote_plus",""),
$telegram_module->buildInlineKeyboardButton("0 ".$minus,"","cb_vote_minus","")) );
$option = array_chunk($option, $count_row);
$keyb = $telegram_module->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' =>$texxt, 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
$telegram_module->sendContent($content);
Прописываем вызов этого сценария в модуле "Каналы RSS" в нужным строках.
Для того, чтобы корректно учитывались голоса пользователей, в модуле Telegram создаем событие callback с именем vote
if (strpos($callback, 'cb_vote_') !== false) {
$skip = true;
$res = $data["callback_query"]["message"]["text"];
$cmd = explode("_", $callback);
$endpoint = "editMessageText";
$content = array(
'chat_id' => $data["callback_query"]["message"]["chat"]["id"],
'message_id' => $message_id,
'parse_mode' => 'HTML'
);
$plus =intval($data["callback_query"]["message"]["reply_markup"]["inline_keyboard"][0][0]["text"]);
$minus = intval($data["callback_query"]["message"]["reply_markup"]["inline_keyboard"][0][1]["text"]);
if ($cmd[2] == 'plus')
{
$plus = $plus + 1;
}
if ($cmd[2] == 'minus')
{
$minus = $minus + 1;
}
$plus_i = json_decode('"'.'\ud83d\udc4d'.'"');
$minus_i = json_decode('"'.'\ud83d\udc4e'.'"');
$option = array( array($this->buildInlineKeyboardButton($text=$plus." ".$plus_i,"","cb_vote_plus",""),
$this->buildInlineKeyboardButton($text=$minus." ".$minus_i,"","cb_vote_minus","")) );
$keyb = $this->buildInlineKeyBoard($option);
$content['text'] = $res;
$content['reply_markup'] = $keyb;
$class='tlgvote';
$user=str_replace('-','_',$data['callback_query']['from']['id']);
if (gg($class.'_'.$user.'.'.$content['message_id'])<>'1')
{
$this->sendContent($content, $endpoint);
$class='tlgvote';
addClass($class);
addClassObject($class,$class.'_'.$user);
sg($class.'_'.$user.'.'.$content['message_id'],'1');
debmes('голос учен','vote');
}
}
Теперь у вас в системе будет создан класс tlgvote с пользователями, кто проголосовал за запись. Голос будет учет один раз.
Заметка создана при поддержке пользователя Eraser https://connect.smartliving.ru/profile/186/blog/go...
Канал, который собирает новости по MajorDoMo https://t.me/majordomo_feed
Екатеринбург, Россия
На форуме: directman66