Отправка и удаление старых сообщений в телеграмм
Добавлено: Чт янв 14, 2021 12:23 pm
Некогда ( ударение на первый слог ) Александр, он же @Logrus написал статью (хотел указать на нее ссылку, но видимо автор ее удалил) об удалении предыдущих постов в телеграмм.
Не все понимают сразу что и как ( Вы уж простите что наверное повторяю Вашу статью!), но Благодаря безграничной помощи и терпению Руслана Бег он же @newz20,
постараюсь написать статью для новичков.
Замечания, дополнения , принимаются!( Для всех же лучше будет)
Что смогу исправлю и допишу!)
Использовать можно в командах и событиях самого модуля телеграмм, в методах обьектов и сценариях.
Relay10 // обьект
metod statusUpdated
// так как некоторые не обязательно что бы Aлиса говорила, но можно писать в чат, заодно потом и удаляется само.
// это пример с модуля яндекс пробки
// отправляет и удаляет предыдущие картинки
// отправляе в телегу картинку погоды
// изначально отправляло только как этот скрипт ниже
// теперь и отправляет и чистит предыдущий
// В команде телеграмм к примеру : команда Свет
Не все понимают сразу что и как ( Вы уж простите что наверное повторяю Вашу статью!), но Благодаря безграничной помощи и терпению Руслана Бег он же @newz20,
постараюсь написать статью для новичков.
Замечания, дополнения , принимаются!( Для всех же лучше будет)
Что смогу исправлю и допишу!)
Использовать можно в командах и событиях самого модуля телеграмм, в методах обьектов и сценариях.
Relay10 // обьект
metod statusUpdated
// так как некоторые не обязательно что бы Aлиса говорила, но можно писать в чат, заодно потом и удаляется само.
Код: Выделить всё
if ($params['NEW_VALUE'] == $params['OLD_VALUE']) return;
if ($params['NEW_VALUE'] == 1){
$messageN = "Ночник LED включен!";
}elseif ($params['NEW_VALUE'] == 0 && $params['OLD_VALUE'] == 1){
$messageN = "Ночник LED выключен!"; // всесто say переменную с уникальным индификатором
}
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$chat_id = 996725696;
$res = $telegram_module->sendMessageToUser($chat_id,$messageN); // переменая результат $res
if ($message_id = $res['result']['message_id']) {
$message_id_old = registeredEventDetails('tlg/events/1Nochnik'); // каждый раз events должен быть уникальным (не повторятся!)
$telegram_module->deleteMessage($chat_id, $message_id_old);
registerEvent('tlg/events/1Nochnik', $message_id, 1); // каждый раз events должен быть уникальным (не повторятся!)
//$this->deleteMessage($chat_id, $data['message']['message_id']);
}
//include_once(DIR_MODULES . 'telegram/telegram.class.php');
//$telegram_module = new telegram();
$chat_id = 430199255;
$res = $telegram_module->sendMessageToUser($chat_id,$messageN); // переменная $res ( обычно там нет такого)
if ($message_id = $res['result']['message_id']) {
$message_id_old = registeredEventDetails('tlg/events/2Nochnik'); // каждый раз events должен быть уникальным (не повторятся!)
$telegram_module->deleteMessage($chat_id, $message_id_old);
registerEvent('tlg/events/2Nochnik', $message_id, 1); // каждый раз events должен быть уникальным (не повторятся!)
//$this->deleteMessage($chat_id, $data['message']['message_id']);
}
// это пример с модуля яндекс пробки
// отправляет и удаляет предыдущие картинки
Код: Выделить всё
if ($params['NEW_VALUE'] == $params['OLD_VALUE']) return;
if ($params['NEW_VALUE']>7) {$icon="<img src='/templates/app_yatraffic/icons/red.png'>";}
if ($params['NEW_VALUE']<7) {$icon="<img src='/templates/app_yatraffic/icons/yellow.png'>";}
if ($params['NEW_VALUE']<4) {$icon="<img src='/templates/app_yatraffic/icons/green.png'>";}
sg('yt_info.TRtypeicon',$icon);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$typeicon = gg('yt_info.TRtypeicon');
$img = DOC_ROOT.substr($typeicon, 10, -2);
$telegram_module = new telegram();
$chat_id = 996725696;
$res = $telegram_module->sendImage($chat_id, $img,'TRtypeicon Rpi3'); // переменная $res ( обычно там нет такого)
if ($message_id = $res['result']['message_id']) {
$message_id_old = registeredEventDetails('tlg/events/TRtypeiconM');
$telegram_module->deleteMessage($chat_id, $message_id_old);
registerEvent('tlg/events/TRtypeiconM', $message_id, 1);
}
$chat_id = 430199255;
$res = $telegram_module->sendImage($chat_id, $img,'TRtypeicon Rpi3'); // переменная $res ( обычно там нет такого)
if ($message_id = $res['result']['message_id']) {
$message_id_old = registeredEventDetails('tlg/events/TRTypeiconG'); // каждый раз events должен быть уникальным (не повторятся!)
$telegram_module->deleteMessage($chat_id, $message_id_old);
registerEvent('tlg/events/TRTypeiconG', $message_id, 1);
}
Код: Выделить всё
//передаем какая сейчас погода
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$messageW = ('фактическая погода от weatherMap обновилась и составляет! ' .gg('ow_fact.reelfeel') . ' °C'); // всесто say переменную с уникальным индификатором
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$chat_id = 996725696
$res = $telegram_module->sendMessageToUser($chat_id,$messageW); // переменная $res ( обычно там нет такого)
if ($message_id = $res['result']['message_id']) {
$message_id_old = registeredEventDetails('tlg/events/MweatherMap'); // каждый раз events должен быть уникальным (не повторятся!)
$telegram_module->deleteMessage($chat_id, $message_id_old);
registerEvent('tlg/events/MweatherMap', $message_id, 1);
}
$chat_id = 430199255;
$res = $telegram_module->sendMessageToUser($chat_id,$messageW); // переменная $res ( обычно там нет такого)
if ($message_id = $res['result']['message_id']) {
$message_id_old = registeredEventDetails('tlg/events/GweatherMap'); // каждый раз events должен быть уникальным (не повторятся!)
$telegram_module->deleteMessage($chat_id, $message_id_old);
registerEvent('tlg/events/GweatherMap', $message_id, 1); // каждый раз events должен быть уникальным (не повторятся!)
}
// отправляе в телегу картинку погоды
// изначально отправляло только как этот скрипт ниже
Код: Выделить всё
$link_to_icon = substr($icon, 10, -2);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToAdmin(DOC_ROOT . $link_to_icon, $message = 'Изображение погоды');
// теперь и отправляет и чистит предыдущий
Код: Выделить всё
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$typeicon = gg('ow_fact.weather_typeicon');
$img = DOC_ROOT.substr($icon, 10, -2);
$telegram_module = new telegram();
$chat_id = 336723296;
$res = $telegram_module->sendImage($chat_id, $img,'weather_typeicon'); // переменная $res ( обычно там нет такого)
if ($message_id = $res['result']['message_id']) {
$message_id_old = registeredEventDetails('tlg/events/Wicon'); // каждый раз events должен быть уникальным (не повторятся!)
$telegram_module->deleteMessage($chat_id, $message_id_old);
registerEvent('tlg/events/Wicon', $message_id, 1); // каждый раз events должен быть уникальным (не повторятся!)
}
$chat_id = 420100255;
$res = $telegram_module->sendImage($chat_id, $img,'weather_typeicon'); // переменная $res ( обычно там нет такого)
if ($message_id = $res['result']['message_id']) {
$message_id_old = registeredEventDetails('tlg/events/WTicon'); // каждый раз events должен быть уникальным (не повторятся!)
$telegram_module->deleteMessage($chat_id, $message_id_old);
registerEvent('tlg/events/WTicon', $message_id, 1); // каждый раз events должен быть уникальным (не повторятся!)
}
// В команде телеграмм к примеру : команда Свет
Код: Выделить всё
$off = hex2bin('F09F8C91');
$on = hex2bin('F09F8C95');
$objects = getObjectsByClass('SRelays');
foreach($objects as $obj) {
//выводим только те у кого нет единицы в свойстве hide
if (gg($obj['TITLE'] . '.hide') != 1) {
//задаем состояние значка вкл. или откл.
if (gg($obj['TITLE'] . '.status')) {
$state = $on;
} else {
$state = $off;
}
//формируем массив кнопок с их состоянием
$option[] = $this->buildInlineKeyboardButton($state . ' ' . getObject($obj['TITLE'])->description, '', 'CallbackSvet_' . $obj['TITLE'], '');
}
}
$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $this->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => 'Управление светом:', 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
$res = $this->sendContent($content);
if ($message_id = $res['result']['message_id']) {
$message_id_old = registeredEventDetails('tlg/command/Svet');
$this->deleteMessage($chat_id, $message_id_old);
registerEvent('tlg/command/Svet', $message_id, 1);
$this->deleteMessage($chat_id, $data['message']['message_id']);
}