[Модуль] Telegram (telegram)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 868 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Вс фев 11, 2018 10:37 am

yden писал(а):
отправьте боту /start, должен зарегистрироваться пользователь[/quote]

Старт отправлял - тишина. Т.е бот не прислал приветственное сообщение.[/quote]Что в логе модуля после отправки /start

Отправлено с моего MX_Base через Tapatalk
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Вс фев 11, 2018 10:56 am

Друзья, 2 вопроса:
1) можно ли в текстовую переменную вставлять перевод строки, который бы определял модуль? <br> дает ошибку. (уже нашел \n работает )
2) можно ли отправлять таблицы (не картинки)
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Вс фев 11, 2018 11:09 am

Куда как не в эту тему постить интересные сценарии.
В общем готовый сценарий отправляет все значения объекта и дату измения (или прошедшее время с даты измения). Для добавление новой кнопки просто добавьте в команды телеграмм. 

Код: Выделить всё

$telegram_module->buildInlineKeyboardButton($text="имя объекта","", "Callback_sensor_имя объекта","")

Команда телеграм:

Код: Выделить всё

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();


// $option[] = $telegram_module->buildInlineKeyboardButton($text=$state." ".$obj,"","Callback_fm_".$dir."/".$obj,"");

$option = array(
$telegram_module->buildInlineKeyboardButton($text="all_in_one","", "Callback_sensor_all_in_one",""),
$telegram_module->buildInlineKeyboardButton($text="current","", "Callback_sensor_current","")
) ;



$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $telegram_module->buildInlineKeyBoard($option);

$content = array('chat_id' => $chat_id, 'text' => "Датчики: ".$dir, 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
$telegram_module->sendContent($content);
callback:

Код: Выделить всё

//$telegram_module->sendMessageToAll($callback);
//$telegram_module->sendMessageToAll(substr($callback,9,6));
//$telegram_module->sendMessageToAll(substr($callback,16));

if (substr($callback,9,6) == 'sensor')
{
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram(); 
  rs('sensor2telega', array('zapros' =>substr($callback,16)));
}
 


сценарий:

Код: Выделить всё

function get_dt($prop)
{
$sql='SELECT max(h.added ) dt, unix_timestamp(h.added) unx  FROM `phistory` h WHERE h.value_ID = (SELECT `ID` FROM `pvalues` WHERE `PROPERTY_NAME` = "'.$prop.'")';
$rec = SQLSelect($sql); 
return $rec[0][dt];
}

function get_props($obj)
{
//$sql='SELECT title FROM `properties`  where object_id = (SELECT id FROM `objects`  where title="'.$obj.'")';
$sql='SELECT substring(PROPERTY_NAME, POSITION("." in PROPERTY_NAME)+1) title FROM `pvalues` where PROPERTY_NAME like "'.$obj.'%"';
$rec = SQLSelect($sql); 
foreach ($rec as $prop)
{
 //print_r($prop)[title];
$ar2[] = $prop[title];
}
return $ar2;
}

function get_unx($prop)
{
$sql='SELECT max(h.added ) dt, unix_timestamp(h.added) unx  FROM `phistory` h WHERE h.value_ID = (SELECT `ID` FROM `pvalues` WHERE `PROPERTY_NAME` = "'.$prop.'")';
$rec = SQLSelect($sql); 
return $rec[0][unx];
}


include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();


$obj=$params['zapros'];
if ($obj==""){$obj="all_in_one";}

$text='';

//$obj="current";

//$objprops=getObjectsByProperty($obj,">","0");
$objprops=get_props($obj);
//print_r($objprops);
foreach ($objprops as $prop)
{
 if  (is_numeric (gg($obj.".".$prop ))) {$value=round(gg($obj.".".$prop),2);}
else {$value=gg($obj.".".$prop);}
 
 if (gmdate('i',trim(time()-get_unx($obj.".".$prop)))<120) 
 {$text.=$obj.".".$prop.":".$value." (".preg_replace("|\b[0]+([1-9][\d]*)|is", "\\1", (gmdate('i',trim(time()-get_unx($obj.".".$prop)))))." минут назад)\n";}
else  
{$text.=$obj.".".$prop.":".$value." ".preg_replace("|\b[0]+([1-9][\d]*)|is", "\\1", (gmdate('i',trim(time()-get_unx($obj.".".$prop)))))." минут назад (".get_dt($obj.'.'.$prop).")\n";}

}
$text=substr($text,0,4090);
$telegram_module->sendMessageToAll($text);
echo $text; 
не забывайте про клавишу спасибо.
СпойлерПоказать
Безымянный.png
Безымянный.png (29.92 КБ) 6307 просмотров
За это сообщение автора directman66 поблагодарили (всего 5):
ypiter2006 (Вс фев 11, 2018 12:09 pm) • NiKiToS (Вс фев 11, 2018 12:12 pm) • burano (Вт фев 13, 2018 11:43 pm) • Hold (Ср мар 04, 2020 12:37 pm) • AndreyAA (Сб окт 10, 2020 9:27 am)
Рейтинг: 5.81%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Вс фев 11, 2018 1:00 pm

2Eraser, если сообщение больше 4096 символов, падает цикл. Думаю надо обрабатывать эту ситуацию. Или парсить на куски или обрезать нафик.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 868 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Вс фев 11, 2018 3:26 pm

directman66 писал(а):Друзья, 2 вопроса:
1) можно ли в текстовую переменную вставлять перевод строки, который бы определял модуль? <br> дает ошибку. (уже нашел \n работает )
2) можно ли отправлять таблицы (не картинки)
можно только то что тут прописано
https://core.telegram.org/bots/api#html-style
Последний раз редактировалось Eraser Вс фев 11, 2018 4:16 pm, всего редактировалось 1 раз.
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
burano
Сообщения: 13
Зарегистрирован: Вс июн 25, 2017 11:05 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Модуль "Telegram"

Сообщение burano » Вс фев 11, 2018 4:05 pm

Вопрос разработчику
Прошу пояснить как разобраться почему модуль иногда падает.
Подозреваю что не может что-то в файл c debug сохранить, я пытался разобраться почему сообщения из чата Алисы не отправляются, вот включил даже настроил и сообщения приходят, но теперь падает Telegramm
Возможно баг нашел.
15:33:09 0.26480300 Closing thread: exec php -q ./scripts/cycle_telegram.php --params "a:0:{}">>/var/www/debmes/log_2018-02-11-cycle_telegram.php.txt
15:33:08 0.70601500 External context response: a:1:{s:15:"MATCHED_CONTEXT";i:0;}
15:31:48 0.47571000 Closing thread: exec php -q ./scripts/cycle_telegram.php --params "a:0:{}">>/var/www/debmes/log_2018-02-11-cycle_telegram.php.txt
15:31:47 0.61112300 External context response: a:1:{s:15:"MATCHED_CONTEXT";i:0;}
Raspberry Pi3+ Arduino Mega (AMS) + Arduino Nano
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Вс фев 11, 2018 6:11 pm

burano писал(а):Вопрос разработчику
Прошу пояснить как разобраться почему модуль иногда падает.
Подозреваю что не может что-то в файл c debug сохранить, я пытался разобраться почему сообщения из чата Алисы не отправляются, вот включил даже настроил и сообщения приходят, но теперь падает Telegramm
Возможно баг нашел.
15:33:09 0.26480300 Closing thread: exec php -q ./scripts/cycle_telegram.php --params "a:0:{}">>/var/www/debmes/log_2018-02-11-cycle_telegram.php.txt
15:33:08 0.70601500 External context response: a:1:{s:15:"MATCHED_CONTEXT";i:0;}
15:31:48 0.47571000 Closing thread: exec php -q ./scripts/cycle_telegram.php --params "a:0:{}">>/var/www/debmes/log_2018-02-11-cycle_telegram.php.txt
15:31:47 0.61112300 External context response: a:1:{s:15:"MATCHED_CONTEXT";i:0;}
directman66 писал(а):2Eraser, если сообщение больше 4096 символов, падает цикл. Думаю надо обрабатывать эту ситуацию. Или парсить на куски или обрезать нафик.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
yden
Сообщения: 141
Зарегистрирован: Пн авг 22, 2016 10:03 am
Благодарил (а): 28 раз
Поблагодарили: 5 раз

Re: Модуль

Сообщение yden » Пн фев 12, 2018 7:44 am

Eraser писал(а):
yden писал(а):
отправьте боту /start, должен зарегистрироваться пользователь
Старт отправлял - тишина. Т.е бот не прислал приветственное сообщение.[/quote]Что в логе модуля после отправки /start

Отправлено с моего MX_Base через Tapatalk[/quote]
Хм, вчера прилетело обновление Телеграмма, все начало отправляться\получать.

Если так оперативно исправляются проблемы, то мне с mjd по пути.
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Вт фев 13, 2018 10:54 am

Теперь я напишу, что цикл телеграма падает по любому случаю. Иногда работает тот же самый код, иногда нет. Зависимости уловить не могу. В логах ничего инетерсного не видно.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Модуль "Telegram"

Сообщение Logrus » Вт фев 13, 2018 11:13 am

раза три падал и не стартовал, причину не понял, в икс рей поставил галку рестарт, пока падений не было
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить