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

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

Модераторы: Bagir, Ivan, Vit, immortal, PAV

dmsergei
Сообщения: 13
Зарегистрирован: Чт ноя 22, 2018 1:04 am
Благодарил (а): 1 раз
Поблагодарили: 0

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

Сообщение dmsergei » Сб ноя 24, 2018 10:49 pm

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

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

Сообщение Eraser » Ср ноя 28, 2018 10:35 am

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

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

Сообщение Eraser » Ср ноя 28, 2018 10:48 am

Добавлены функции пакетной отправки изображений (альбом)
  • 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');
БОНУС! Получение камер "Простых устройств"Показать
Код для команды телеграмм

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

$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,'Камеры');
album.png
album.png (326.52 КБ) 254 просмотра
За это сообщение автора Eraser поблагодарили (всего 3):
xor (Ср ноя 28, 2018 11:03 am) • consul (Ср ноя 28, 2018 11:16 am) • cabat (Ср ноя 28, 2018 11:26 am)
Рейтинг: 4.11%
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
alekszander
Сообщения: 177
Зарегистрирован: Вс янв 05, 2014 5:37 am
Благодарил (а): 10 раз
Поблагодарили: 14 раз

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

Сообщение alekszander » Ср ноя 28, 2018 10:58 am

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

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

Сообщение Eraser » Ср ноя 28, 2018 11:01 am

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

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

Сообщение 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 был добавлен в качестве эксперимента. Но результата не дало
Аватара пользователя
Eraser
Сообщения: 655
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 13 раз
Поблагодарили: 458 раз
Контактная информация:

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

Сообщение 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
код командыПоказать
$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 "Незнаю такого!";
}
За это сообщение автора Eraser поблагодарил:
consul (Ср ноя 28, 2018 11:18 am)
Рейтинг: 1.37%
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
consul
Сообщения: 5
Зарегистрирован: Чт окт 12, 2017 4:55 pm
Благодарил (а): 57 раз
Поблагодарили: 0

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

Сообщение consul » Ср ноя 28, 2018 11:19 am

Eraser писал(а):
Ср ноя 28, 2018 11:12 am
а зачем это в callback? можно просто в команду, у меня так: создана команда "Где", скрыта от показа в клавиатуре, для активации нужно отправить сообщение боту "где имя_пользователя", имя надо задать в User.fullName
код командыПоказать
$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
Сообщения: 65
Зарегистрирован: Ср апр 26, 2017 11:44 am
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 5 раз

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

Сообщение Mikik » Вт дек 04, 2018 2:05 pm

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

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

Сообщение dioxin » Вт дек 04, 2018 3:14 pm

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
код командыПоказать
$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 КБ) 99 просмотров
Алиска прописана на Debian 8 | Мой канал на youtube по MajorDomo
Ответить