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

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

Модератор: immortal

dmsergei
Сообщения: 100
Зарегистрирован: Чт ноя 22, 2018 1:04 am

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

Сообщение dmsergei »

Получаю такое в логе
Но работает
Вложения
Error.jpg
Error.jpg (52.66 КБ) 7720 просмотров
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Контактная информация:

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

Сообщение Eraser »

anneksiya82 писал(а): Чт ноя 22, 2018 4:54 pm Привет всем. ни кто не задумался реализовать пакетную отправка изображений? Реально данный вещь реализовать?
было давно в планах, скоро выложу обновление
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Контактная информация:

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

Сообщение Eraser »

Добавлены функции пакетной отправки изображений (альбом)
  • sendAlbum - отправка пользователю
  • sendAlbumToAdmin - отправка администраторам
  • sendAlbumToAll - отправка всем
Пример использования

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

include(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$photos = ['/var/www/images/htc_hero_wallpaper_01.jpg','/var/www/images/htc_hero_wallpaper_02.jpg','/var/www/images/image-1.jpg'];
$telegram_module->sendAlbumToAdmin($photos,'test');
БОНУС! Получение камер "Простых устройств"SPOILER_SHOW
Код для команды телеграмм

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

$objects=getObjectsByClass("SCameras");
$photos = array();
foreach($objects as $obj) {
	$this->sendAction($chat_id,"upload_photo");
 	$url = BASE_URL.gg($obj['TITLE'].".snapshotPreviewURL");
 	$img = "/var/www/files/".$obj['TITLE'].".jpg";
     try {
		 $data = file_get_contents($url);
         $i = strlen($data);
         $handle = fopen($img, "w");
         fwrite($handle, $data);
         fclose($handle);
      	 if ($i > 0) $photos[] = $img;
     } catch (Exception $e) {
             echo 'Caught exception: ',  $e->getMessage(), "\n";
     }
}
$this->sendAlbum($chat_id, $photos,'Камеры');
Последний раз редактировалось Eraser Чт фев 07, 2019 10:11 am, всего редактировалось 1 раз.
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
alekszander
Сообщения: 178
Зарегистрирован: Вс янв 05, 2014 5:37 am

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

Сообщение alekszander »

Коллеги, подскажите. Сделал callback на запрос координат. При запросе координат начинает бесконечно слать позицию. Причём делает это рандомно. Может прийти а может и очень много. Куда копать не подскажите?
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Контактная информация:

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

Сообщение Eraser »

alekszander писал(а): Ср ноя 28, 2018 10:58 am Коллеги, подскажите. Сделал callback на запрос координат. При запросе координат начинает бесконечно слать позицию. Причём делает это рандомно. Может прийти а может и очень много. Куда копать не подскажите?
код callback в студию!
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
alekszander
Сообщения: 178
Зарегистрирован: Вс янв 05, 2014 5:37 am

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

Сообщение alekszander »

Eraser писал(а): Ср ноя 28, 2018 11:01 am
alekszander писал(а): Ср ноя 28, 2018 10:58 am Коллеги, подскажите. Сделал callback на запрос координат. При запросе координат начинает бесконечно слать позицию. Причём делает это рандомно. Может прийти а может и очень много. Куда копать не подскажите?
код callback в студию!

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

$this->sendAction($chat_id);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
if (substr($callback,0,3) == 'gde')
{
$coord=gg(substr($callback,4).'.Coordinates');
$adr=gg(substr($callback,4).'.Location');
$sp=explode(",",$coord);
$telegram_module->sendLocationToUser($chat_id,$sp[0],$sp[1]);
$telegram_module->sendMessageToUser($chat_id,$adr);
}
return;
Return был добавлен в качестве эксперимента. Но результата не дало
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Контактная информация:

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

Сообщение Eraser »

alekszander писал(а): Ср ноя 28, 2018 11:05 am
Eraser писал(а): Ср ноя 28, 2018 11:01 am
alekszander писал(а): Ср ноя 28, 2018 10:58 am Коллеги, подскажите. Сделал callback на запрос координат. При запросе координат начинает бесконечно слать позицию. Причём делает это рандомно. Может прийти а может и очень много. Куда копать не подскажите?
код callback в студию!

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

$this->sendAction($chat_id);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
if (substr($callback,0,3) == 'gde')
{
$coord=gg(substr($callback,4).'.Coordinates');
$adr=gg(substr($callback,4).'.Location');
$sp=explode(",",$coord);
$telegram_module->sendLocationToUser($chat_id,$sp[0],$sp[1]);
$telegram_module->sendMessageToUser($chat_id,$adr);
}
return;
Return был добавлен в качестве эксперимента. Но результата не дало
а зачем это в callback? можно просто в команду, у меня так: создана команда "Где", скрыта от показа в клавиатуре, для активации нужно отправить сообщение боту "где имя_пользователя", имя надо задать в User.fullName
код командыSPOILER_SHOW
$this->sendAction($chat_id,"find_location");

$user = explode(' ',$text)[1];
echo $user;
$obj_name="";
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
if (getGlobal($obj['TITLE'].".fullName")==$user)
{
$obj_name = $obj['TITLE'];
break;
}
}
if ($obj_name !="")
{
$coord = getGlobal($obj_name.".Coordinates");
$ll = explode(',',$coord);
$lat = $ll[0];
$lon = $ll[1];
$seenAt = getGlobal($obj_name.".CoordinatesUpdated"). " " . getGlobal($obj_name.".seenAt")." Батарея:" .getGlobal($obj_name.".BattLevel")."%";

$this->sendVenueToUser($chat_id , $lat , $lon, $user, $seenAt);
$message_id = $res["result"]["message_id"];
sg($obj_name.".msgLoc",$message_id);
sg($obj_name.".msgLocTime",time());
setTimeOut($obj_name.'_locationUpdate','callMethod("'.$obj_name.'.sendLocation", array("VALUE"=>'.$chat_id.'));',60);
return "";
}
else
{
return "Незнаю такого!";
}
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
consul
Сообщения: 6
Зарегистрирован: Чт окт 12, 2017 4:55 pm

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

Сообщение consul »

Eraser писал(а): Ср ноя 28, 2018 11:12 am а зачем это в callback? можно просто в команду, у меня так: создана команда "Где", скрыта от показа в клавиатуре, для активации нужно отправить сообщение боту "где имя_пользователя", имя надо задать в User.fullName
код командыSPOILER_SHOW
$this->sendAction($chat_id,"find_location");

$user = explode(' ',$text)[1];
echo $user;
$obj_name="";
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
if (getGlobal($obj['TITLE'].".fullName")==$user)
{
$obj_name = $obj['TITLE'];
break;
}
}
if ($obj_name !="")
{
$coord = getGlobal($obj_name.".Coordinates");
$ll = explode(',',$coord);
$lat = $ll[0];
$lon = $ll[1];
$seenAt = getGlobal($obj_name.".CoordinatesUpdated"). " " . getGlobal($obj_name.".seenAt")." Батарея:" .getGlobal($obj_name.".BattLevel")."%";

$this->sendVenueToUser($chat_id , $lat , $lon, $user, $seenAt);
$message_id = $res["result"]["message_id"];
sg($obj_name.".msgLoc",$message_id);
sg($obj_name.".msgLocTime",time());
setTimeOut($obj_name.'_locationUpdate','callMethod("'.$obj_name.'.sendLocation", array("VALUE"=>'.$chat_id.'));',60);
return "";
}
else
{
return "Незнаю такого!";
}
надо в шапку темы добавить, классная функция
Mikik
Сообщения: 111
Зарегистрирован: Ср апр 26, 2017 11:44 am
Откуда: Москва

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

Сообщение Mikik »

После последнего обновления и кардинальной переделке Say, SayTo и т.д. стали твориться странные вещи в модуле. Вывод сообщений идёт в произвольном порядке, а не в том, как записано в коде. Иногда проглатываются целые строки.
Аватара пользователя
dioxin
Сообщения: 175
Зарегистрирован: Вт фев 14, 2017 4:43 pm
Откуда: Иваново

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

Сообщение dioxin »

Eraser писал(а): Ср ноя 28, 2018 11:12 am
alekszander писал(а): Ср ноя 28, 2018 11:05 am
Eraser писал(а): Ср ноя 28, 2018 11:01 am
alekszander писал(а): Ср ноя 28, 2018 10:58 am Коллеги, подскажите. Сделал callback на запрос координат. При запросе координат начинает бесконечно слать позицию. Причём делает это рандомно. Может прийти а может и очень много. Куда копать не подскажите?
код callback в студию!

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

$this->sendAction($chat_id);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
if (substr($callback,0,3) == 'gde')
{
$coord=gg(substr($callback,4).'.Coordinates');
$adr=gg(substr($callback,4).'.Location');
$sp=explode(",",$coord);
$telegram_module->sendLocationToUser($chat_id,$sp[0],$sp[1]);
$telegram_module->sendMessageToUser($chat_id,$adr);
}
return;
Return был добавлен в качестве эксперимента. Но результата не дало
а зачем это в callback? можно просто в команду, у меня так: создана команда "Где", скрыта от показа в клавиатуре, для активации нужно отправить сообщение боту "где имя_пользователя", имя надо задать в User.fullName
код командыSPOILER_SHOW
$this->sendAction($chat_id,"find_location");

$user = explode(' ',$text)[1];
echo $user;
$obj_name="";
$objects=getObjectsByClass("Users");
foreach($objects as $obj) {
if (getGlobal($obj['TITLE'].".fullName")==$user)
{
$obj_name = $obj['TITLE'];
break;
}
}
if ($obj_name !="")
{
$coord = getGlobal($obj_name.".Coordinates");
$ll = explode(',',$coord);
$lat = $ll[0];
$lon = $ll[1];
$seenAt = getGlobal($obj_name.".CoordinatesUpdated"). " " . getGlobal($obj_name.".seenAt")." Батарея:" .getGlobal($obj_name.".BattLevel")."%";

$this->sendVenueToUser($chat_id , $lat , $lon, $user, $seenAt);
$message_id = $res["result"]["message_id"];
sg($obj_name.".msgLoc",$message_id);
sg($obj_name.".msgLocTime",time());
setTimeOut($obj_name.'_locationUpdate','callMethod("'.$obj_name.'.sendLocation", array("VALUE"=>'.$chat_id.'));',60);
return "";
}
else
{
return "Незнаю такого!";
}
Давным давно сделал вывод кто-где находится не координатами, а адресами. Через Яндекс API.
2018-12-04_15-12-26.png
2018-12-04_15-12-26.png (10.13 КБ) 7516 просмотров
Алиска прописана на Debian 11 | Мой канал на youtube по MajorDomo
Ответить