Отправка и удаление старых сообщений в телеграмм

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Ответить
Аватара пользователя
Samir77
Сообщения: 95
Зарегистрирован: Чт фев 02, 2017 7:30 pm
Благодарил (а): 755 раз
Поблагодарили: 9 раз

Отправка и удаление старых сообщений в телеграмм

Сообщение Samir77 » Чт янв 14, 2021 12:23 pm

Некогда ( ударение на первый слог :) ) Александр, он же @Logrus написал статью (хотел указать на нее ссылку, но видимо автор ее удалил) об удалении предыдущих постов в телеграмм.
Не все понимают сразу что и как ( Вы уж простите что наверное повторяю Вашу статью!), но Благодаря безграничной помощи и терпению Руслана Бег он же @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']);
}

Последний раз редактировалось Samir77 Пт янв 15, 2021 3:26 pm, всего редактировалось 2 раза.
ASUS ASPIRE 5739G Windows 7 + Raspberry Pi3 + Broadlink + Sonoff
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Отправка и удаление старых сообщений в телеграмм

Сообщение xor » Пт янв 15, 2021 3:37 am

а зачем удалять старые сообщения?
За это сообщение автора xor поблагодарил:
Samir77 (Пт янв 15, 2021 3:17 pm)
Рейтинг: 1.16%
Аватара пользователя
Samir77
Сообщения: 95
Зарегистрирован: Чт фев 02, 2017 7:30 pm
Благодарил (а): 755 раз
Поблагодарили: 9 раз

Re: Отправка и удаление старых сообщений в телеграмм

Сообщение Samir77 » Пт янв 15, 2021 3:17 pm

xor писал(а):
Пт янв 15, 2021 3:37 am
а зачем удалять старые сообщения?
Так оно ж не все подряд удаляет, а только свое из своего действия.
К примеру произносится и пишется в чат "Бра включен" или "Бра выключен"
зачем мне в чате 10000 сообщений.. а так подчищает за собой. ;)
ASUS ASPIRE 5739G Windows 7 + Raspberry Pi3 + Broadlink + Sonoff
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Отправка и удаление старых сообщений в телеграмм

Сообщение xor » Пт янв 15, 2021 9:42 pm

Samir77 писал(а):
Пт янв 15, 2021 3:17 pm
xor писал(а):
Пт янв 15, 2021 3:37 am
а зачем удалять старые сообщения?
Так оно ж не все подряд удаляет, а только свое из своего действия.
К примеру произносится и пишется в чат "Бра включен" или "Бра выключен"
зачем мне в чате 10000 сообщений.. а так подчищает за собой. ;)
а, для быстрого реагирования?
ок
За это сообщение автора xor поблагодарил:
Samir77 (Пн янв 18, 2021 12:34 pm)
Рейтинг: 1.16%
Ответить