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

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

Модератор: immortal

directman66
Сообщения: 2366
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 328 раз
Поблагодарили: 473 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Пн фев 05, 2018 8:03 pm

после добавления боту прав админа в созданной группе, эта группа отобразилась в модуле!!!
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram | +79122962262 WhatsApp
directman66
Сообщения: 2366
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 328 раз
Поблагодарили: 473 раза
Контактная информация:

Re: Модуль

Сообщение directman66 » Пн фев 05, 2018 8:16 pm

Eraser писал(а): надо настроить боту privacy mode через @BotFather
https://core.telegram.org/bots#privacy-mode
Это как раз прав не хватает? Itfff бот должен появиться в новых юзерах?
СпойлерПоказать
Изображение
и ничего не происходит
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram | +79122962262 WhatsApp
Аватара пользователя
Eraser
Сообщения: 789
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 13 раз
Поблагодарили: 587 раз
Контактная информация:

Re: Модуль

Сообщение Eraser » Пн фев 05, 2018 8:20 pm

directman66 писал(а):
Eraser писал(а): надо настроить боту privacy mode через @BotFather
https://core.telegram.org/bots#privacy-mode
Это как раз прав не хватает? Itfff бот должен появиться в новых юзерах?
СпойлерПоказать
Изображение
и ничего не происходит
а в логе фиксируется что пришло сообщение от бота?
насколько я знаю боты не видят сообщения других ботов
https://core.telegram.org/bots/faq#why- ... other-bots
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
directman66
Сообщения: 2366
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 328 раз
Поблагодарили: 473 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Пн фев 05, 2018 8:23 pm

в логе нет сообщений от бота
Вариантов взаимодействия больше нет?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram | +79122962262 WhatsApp
skysilver
Сообщения: 2566
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 334 раза
Поблагодарили: 1459 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение skysilver » Пн фев 05, 2018 10:20 pm

Eraser писал(а):может у вас много обработчиков событий? сначала выполняется их обработка, а потом уже команд
Тоже так подумал. Отключил событие messageHook (у меня все в нем), в командах оставил только Пинг. Стало прилетать весьма быстро, практически мгновенно. ))
Только вот на командах не сделать многоуровневую клавиатуру с эмоджи на кнопках, как на обработчике событий.

Как только включаю обратно обработчик, так понг начинает с тормозами приходить, как и собственно реакция от кнопок клавиатуры. Хотя в логе модуля при этом все события одной секундой идут:

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

22:06:37 Send result to 1920хххх5. Command:Ping Result:Pong
22:06:37 Command:Ping Result:Pong
22:06:37 Execute user`s code command
22:06:37 Find command
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
Eraser
Сообщения: 789
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 13 раз
Поблагодарили: 587 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Пн фев 05, 2018 10:22 pm

skysilver писал(а):
Eraser писал(а):может у вас много обработчиков событий? сначала выполняется их обработка, а потом уже команд
Тоже так подумал. Отключил событие messageHook (у меня все в нем), в командах оставил только Пинг. Стало прилетать весьма быстро, практически мгновенно. ))
Только вот на командах не сделать многоуровневую клавиатуру с эмоджи на кнопках, как на обработчике событий.

Как только включаю обратно обработчик, так понг начинает с тормозами приходить, как и собственно реакция от кнопок клавиатуры. Хотя в логе модуля при этом все события одной секундой идут:

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

22:06:37 Send result to 1920хххх5. Command:Ping Result:Pong
22:06:37 Command:Ping Result:Pong
22:06:37 Execute user`s code command
22:06:37 Find command
может что в обработчике оптимизировать? можно код посмотреть?
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
skysilver
Сообщения: 2566
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 334 раза
Поблагодарили: 1459 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение skysilver » Пн фев 05, 2018 10:41 pm

Eraser писал(а):может что в обработчике оптимизировать? можно код посмотреть?
Вот простыня. Только не пугайся, я давно туда не лазил. )) Сделал давным-давно по примеру из этой ветки и особо не дорабатывал. Самые ходовые кнопки Свет, Погода, Климат.
СпойлерПоказать

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

if ( ($chat_id == '1920ххххх35') || ($chat_id == '214ххххх64') ) { //
    
 $this->sendAction($chat_id, "typing");

$em_l = json_decode('"'.'\ud83d\udca1'.'"');
$em_k = json_decode('"'.'\ud83d\udcac'.'"');
$em_n = json_decode('"'.'\u21a9\ufe0f'.'"');
$em_c = json_decode('"'.'\ud83d\udcf8'.'"');
$em_i = json_decode('"'.'\ud83d\udee0'.'"');
$em_s = json_decode('"'.'\u2699'.'"');
$em_g = json_decode('"'.'\ud83c\udf21'.'"');
$em_p = json_decode('"'.'\ud83c\udf24'.'"');
$em_o = json_decode('"'.'\ud83d\udcdd'.'"');
$off  = json_decode('"'.'\ud83c\udf11'.'"');
$on   = json_decode('"'.'\ud83c\udf15'.'"');
$em_rd = json_decode('"'.'\ud83d\udc47'.'"');
$em_cam = json_decode('"'.'\ud83c\udfa5'.'"');
$em_kuh = json_decode('"'.'\ud83c\udfa5 \ud83c\udf7d'.'"'); //\ud83c\udf7d
$em_kom = json_decode('"'.'\ud83c\udfa5 \ud83d\udecb'.'"'); //\ud83d\udecb

$pos = strripos($text , "Меню");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
     $option = array( array($em_l." Свет", $em_c." Камеры"), array($em_p." Погода", $em_g." Климат"), array($em_o." Отчеты", $em_s." Служебное"));
     $this->sendMessageToUser($chat_id, $em_k." Выберите нужный пункт ".$em_rd, $option);
     $skip = true;
}

$pos = strripos($text , "Погода");
if ($pos > -1) {
     $this->sendAction($chat_id, "typing");
    $option = array( array($em_l." Свет", $em_c." Камеры"), array($em_p." Погода", $em_g." Климат"), array($em_o." Отчеты", $em_s." Служебное"));
    $this->sendMessageToUser($chat_id, gg('Kirov.Metcast'), $option);
     $skip = true;
}

$pos = strripos($text , "Климат");
if ($pos > -1) {
     $this->sendAction($chat_id, "typing");
    $option = array( array($em_l." Свет", $em_c." Камеры"), array($em_p." Погода", $em_g." Климат"), array($em_o." Отчеты", $em_s." Служебное"));
    $climat = "Температура ".gg('ThisComputer.RoomTemp')." С. Относительная влажность ".gg('ThisComputer.RoomHumidity')." %. Атмосферное давление ".gg('Kirov.Pressure')." мм.рт.ст.";
     $this->sendMessageToUser($chat_id, $climat, $option);
    $skip = true; 
}

$pos = strripos($text , "Свет");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
 
     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;
     if (gg("SID701_Ch2.status") == 1) $gs = $on; else $gs = $off;
     if (gg("ws2812_status") == 1) $es = $on; else $es = $off;
 
     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array($es." Елка", $gs." Гирлянда"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Кухня");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
 
     cm("Relay1MegaD1.switch");

     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;
     if (gg("SID701_Ch2.status") == 1) $gs = $on; else $gs = $off;
     if (gg("ws2812_status") == 1) $es = $on; else $es = $off;

     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array($es." Елка", $gs." Гирлянда"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Прихожая");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
     
     cm("Relay2MegaD2.switch");
     //$this->sendMessageToUser($chat_id, $em_l." Метод света в прихожей");

     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;
     if (gg("SID701_Ch2.status") == 1) $gs = $on; else $gs = $off;
     if (gg("ws2812_status") == 1) $es = $on; else $es = $off;

     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array($es." Елка", $gs." Гирлянда"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Комната");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
     
     cm("Relay1MegaD2.switch");
     //$this->sendMessageToUser($chat_id, $em_l." Метод света в комнате");

     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;
     if (gg("SID701_Ch2.status") == 1) $gs = $on; else $gs = $off;
     if (gg("ws2812_status") == 1) $es = $on; else $es = $off;

     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array($es." Елка", $gs." Гирлянда"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Подсветка");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");    
     
     cm("SID701_Ch1.switch");
     //$this->sendMessageToUser($chat_id, $em_l." Метод подсветки в шкафу");

     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;
    if (gg("SID701_Ch2.status") == 1) $gs = $on; else $gs = $off;
     if (gg("ws2812_status") == 1) $es = $on; else $es = $off;
  
     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array($es." Елка", $gs." Гирлянда"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Гирлянда");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");    
     
     cm("SID701_Ch2.switch");
     //$this->sendMessageToUser($chat_id, $em_l." Метод подсветки в шкафу");

     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;
    if (gg("SID701_Ch2.status") == 1) $gs = $on; else $gs = $off;
     if (gg("ws2812_status") == 1) $es = $on; else $es = $off;
  
     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array($es." Елка", $gs." Гирлянда"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Елка");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");    
     
     //cm("Relay1ESP1.switch");
 
     if (gg('ws2812_status') == 1) {
        getUrl('http://192.168.2.124/off', 0);
         sg('ws2812_status', 0);
    } else if (gg('ws2812_status') == 0) {
         if (gg('ws2812_mode') != 'tv') {
             getUrl('http://192.168.2.124/all?r='.gg('ws2812_red').'&g='.gg('ws2812_green').'&b='.gg('ws2812_blue'), 0);
             usleep(500000);
             $url = 'http://192.168.2.124/set_mode?m='.gg('ws2812_mode').'&r='.gg('ws2812_red').'&g='.gg('ws2812_green').'&b='.gg('ws2812_blue');
        } else {
               $url = 'http://192.168.2.124/tv';
         }
         getUrl($url, 0);
         sg('ws2812_status', 1);
    }
  
     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;
    if (gg("SID701_Ch2.status") == 1) $gs = $on; else $gs = $off;
     if (gg("ws2812_status") == 1) $es = $on; else $es = $off;
  
     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array($es." Елка", $gs." Гирлянда"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Камеры");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
      $option = array( array($em_kuh." Web-cam 1", $em_kom." Web-cam 2"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_cam." Можно получить фото с камеры видеонаблюдения", $option);
     $skip = true;
}

$pos = strripos($text , "Web-cam 1");
if ($pos > -1) {
    $this->sendAction($chat_id, "upload_photo");
     if ( gg('webcam_1.status') != 1 ) {
         if ( gg('minMsgLevel') == 1 ) sg('minMsgLevel', '2');    
         cm('webcam_1.turnOn');
        setTimeOut('startSendPhotoScript', 'runScript("sendPhoto", array("chat_id"=>'.$chat_id.'));', 3); 
         DebMes('Get Photo from ID ' . $chat_id);
         setTimeOut('webCamOff', 'cm("webcam_1.turnOff");if ( gg("minMsgLevel") == 2 ) sg("minMsgLevel", "1");', 10);    
     } else {
         runScript('sendPhoto', array('chat_id'=>$chat_id));
    }
     $skip = true;
      //$option = array( array($em_kuh." Web-cam 1", $em_kom." Web-cam 2"), array("Меню") );
     //$this->sendMessageToUser($chat_id, $em_cam." Можно получить фото с камеры видеонаблюдения", $option);
}

$pos = strripos($text , "Web-cam 2");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
     $option = array( array($em_kuh." Web-cam 1", $em_kom." Web-cam 2"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_cam." Камера в комнате не работает", $option);
     $skip = true;
}

$pos = strripos($text , "Служебное");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
      $option = array( array("IP", "Ping"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_i." Служебные сведения", $option);
     $skip = true;
}
 
} 
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
Eraser
Сообщения: 789
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 13 раз
Поблагодарили: 587 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Пн фев 05, 2018 11:11 pm

skysilver писал(а):
Eraser писал(а):может что в обработчике оптимизировать? можно код посмотреть?
Вот простыня. Только не пугайся, я давно туда не лазил. )) Сделал давным-давно по примеру из этой ветки и особо не дорабатывал. Самые ходовые кнопки Свет, Погода, Климат.
скопировал себе, стало тоже тормознее отвечать
даже и незнаю как ускорить данный код
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
Аватара пользователя
stalkerkz
Сообщения: 17
Зарегистрирован: Пн ноя 21, 2016 9:50 am
Откуда: Казахстан, Талдыкорган
Благодарил (а): 6 раз
Поблагодарили: 0

Re: Модуль "Telegram"

Сообщение stalkerkz » Ср фев 07, 2018 5:01 pm

Eraser писал(а):
stalkerkz писал(а):Можно как нибудь в модуле телеграм установить несколько ботов? Ну например, чтобы одни сообщения присылались в чат одного бота, а другие по условию допустим, в чат другого бота? Подскажите как сделать.
зачем заводить еще одного бота
можно сделать чтобы бот писал в отдельные каналы или группы
Я еще не сталкивался с программирование чат ботов, больше по ардуино и esp, поэтому чтобы не рыть долго у Вас позвольте спросить? Если это возможно конечно. Можно ли настроить телеграм бота, чтобы допустим только определенные сообщения он кидал в заданную группу, а все остальные шли обычным потоком.
Хотел на отдельную группу поставить сигнал тревоги такой реально длинный чтобы услышать, и чтобы туда сообщение приходили когда котел угольный начнет тухнуть, закипает (было и так когда заслонку клинила) и сенсоры движение во дворе засекут активность.
Аватара пользователя
stalkerkz
Сообщения: 17
Зарегистрирован: Пн ноя 21, 2016 9:50 am
Откуда: Казахстан, Талдыкорган
Благодарил (а): 6 раз
Поблагодарили: 0

Re: Модуль "Telegram"

Сообщение stalkerkz » Ср фев 07, 2018 5:09 pm

Eraser писал(а):
directman66 писал(а):Подскажите, у кого какая скорость реагирования на нажатия кнопок к телеге? У меня проходит примерно 3 секунды после нажатия любой кнопки на ARM процессоре. По поему это очень много.
без использования webhook опрос новых сообщений выполняется с периодичностью 3 секунды (добавил в настройки)
я использую webhook и у меня команда Ping выполняется практически моментально
В догонку еще вопрос, у меня серый ip адрес, зайти из внешки на мажордомо стандартными методами не возможно, настоил vpn туннели через vpnki.ру, но там тожн нестабильно работает, инет часто падает и openvrt не может переподключиться к туннелю, выдает типа пользователь уже авторизирован. Сейчас пытаюсь скрипт в виндосе написать, чтобы в такой ситуации модем (adsl) по телнет перезагружался и openvrt клиент также.

Вопрос такой, при такой картине webhook возможно настроить или он только с белыми адресами работает?
Ответить