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

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

Модератор: immortal

Аватара пользователя
Eraser
Сообщения: 960
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 13 раз
Поблагодарили: 712 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Сб окт 15, 2016 11:29 pm

Jager писал(а):
Eraser писал(а):Итак, как и обещал, выкладываю свои изыскания по поводу создания меню с отображением статуса
Меню отлично работает, но есть пара моментов.
В меню статус отображается правильно, а в чате инвертированно.
После выполнения команды опять появляется надпись «Выберите комнату», это лишнее.
Без надписи "Выберите комнату" не отправляется обновлённое меню. В чате отображается, то что было написано на кнопке до отправки, поэтому и не совпадает с новым статусом.

Ps Есть еще одна задумка, как можно сделать
За это сообщение автора Eraser поблагодарил:
Pacific (Пт янв 18, 2019 7:38 pm)
Рейтинг: 1.23%
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 179 раз

Re: Модуль

Сообщение Jager » Вс окт 16, 2016 8:25 am

Eraser писал(а): Есть еще одна задумка, как можно сделать
В идеале уйти бы от кода в messageHook, завязав все на встроенные в мдм шаблоны поведения, оставив там лишь обработку статуса.
Аватара пользователя
Eraser
Сообщения: 960
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 13 раз
Поблагодарили: 712 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Вс окт 16, 2016 11:22 am

Вот еще одно довольно интересное решение интерактивной клавиатуры:
1) Создается команда "Свет" с кодом

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

$off = json_decode('"'.'\ud83c\udf11'.'"');
$on = json_decode('"'.'\uD83C\uDF15'.'"');
 $ks = $off;
 $ts = $off;
 if (gg("kitchenLed.on") == 1)
    $ks = $on;
 if (gg("Relay1.status") == 1)
   $ts = $on;
$option = array( array($this->buildInlineKeyboardButton($text=$ks."Кухня","","Callback_kitchenLed",""),
                       $this->buildInlineKeyboardButton($text=$ts."Торшер","","Callback_Relay1","") ) );
$keyb = $this->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Управление светом:", 'reply_markup' => $keyb);
$this->sendContent($content);
2) Создается событие "Callback_light" на "Callback" с кодом

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

$sw = false;
if ($callback == 'Callback_kitchenLed')
{
 $sw = true;
 cm("kitchenLed.switch");
}
if ($callback == 'Callback_Relay1')
{
 $sw = true;
 cm("Relay1.switch");
}
if ($sw)
{
 $off = json_decode('"'.'\ud83c\udf11'.'"');
 $on = json_decode('"'.'\uD83C\uDF15'.'"');
 $ks = $off;
 $ts = $off;
 if (gg("kitchenLed.on") == 1)
    $ks = $on;
 if (gg("Relay1.status") == 1)
   $ts = $on;
 $option = array( array($this->buildInlineKeyboardButton($text=$ks."Кухня","","Callback_kitchenLed",""),
                       $this->buildInlineKeyboardButton($text=$ts."Торшер","","Callback_Relay1","") ) );
 $keyb = $this->buildInlineKeyBoard($option);
 $this->editMessage($chat_id,$message_id,"Управление светом:",$keyb);
}
В результате будет клавиатура на которой будет отображаться текущий статус, при нажатии на кнопки будет выполняться действие и изменяться статус
Вложения
file_7.jpg
inlineKeyboard
file_7.jpg (52.58 КБ) 6917 просмотров
За это сообщение автора Eraser поблагодарили (всего 7):
ErmolenkoM (Ср окт 19, 2016 6:40 pm) • Vit (Чт дек 15, 2016 11:17 am) • Руслан (Вт янв 17, 2017 12:04 pm) • dmw (Вт апр 17, 2018 10:07 am) • LocalBrownie (Ср авг 21, 2019 1:08 pm) • krom9ra (Пн ноя 11, 2019 5:32 am) • slax (Пт мар 27, 2020 11:58 am)
Рейтинг: 8.64%
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
Varrcan
Сообщения: 24
Зарегистрирован: Чт июл 30, 2015 10:04 pm
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: Модуль "Telegram"

Сообщение Varrcan » Вс окт 16, 2016 7:52 pm

В логах:

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

PHP Warning:  Declaration of telegram::saveParams() should be compatible with module::saveParams($data = 1) in /var/www/modules/telegram/telegram.class.php on line 1084
PHP Warning:  Declaration of telegram::install() should be compatible with module::install($parent_name = '') in /var/www/modules/telegram/telegram.class.php on line 1084
Еще проблема. Если написать в чат МД команду, то ответ приходит в telegram, но через чат telegram МД не реагирует никак.
Даже стандартный Ping Pong не работает. Ping есть, а Pong нет.
Никаких изменений в настройках telegram не делал, буквально неделю назад все работало.
Что я делаю не так?
Аватара пользователя
Eraser
Сообщения: 960
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 13 раз
Поблагодарили: 712 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Вс окт 16, 2016 9:13 pm

Varrcan писал(а):В логах:

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

PHP Warning:  Declaration of telegram::saveParams() should be compatible with module::saveParams($data = 1) in /var/www/modules/telegram/telegram.class.php on line 1084
PHP Warning:  Declaration of telegram::install() should be compatible with module::install($parent_name = '') in /var/www/modules/telegram/telegram.class.php on line 1084
Еще проблема. Если написать в чат МД команду, то ответ приходит в telegram, но через чат telegram МД не реагирует никак.
Даже стандартный Ping Pong не работает. Ping есть, а Pong нет.
Никаких изменений в настройках telegram не делал, буквально неделю назад все работало.
Что я делаю не так?
в "Истории событий" есть команды отправленные боту?
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
Varrcan
Сообщения: 24
Зарегистрирован: Чт июл 30, 2015 10:04 pm
Благодарил (а): 11 раз
Поблагодарили: 7 раз

Re: Модуль "Telegram"

Сообщение Varrcan » Вс окт 16, 2016 9:42 pm

Программирование - это магия.
Перезагрузил систему, все заработало...

Поймаю еще раз эту ошибку, отпишусь
Colp
Сообщения: 11
Зарегистрирован: Вс фев 22, 2015 8:57 pm
Откуда: Минск, Беларусь
Благодарил (а): 13 раз
Поблагодарили: 2 раза

Re: Модуль "Telegram"

Сообщение Colp » Пн окт 17, 2016 12:41 am

Varrcan писал(а):Программирование - это магия.
Перезагрузил систему, все заработало...

Поймаю еще раз эту ошибку, отпишусь

Я тоже ловил подобный баг, когда сообщения от Алисы в телеграм приходят, а наоборот - нет. В том числе не работал и пинг. Замечал тогда, что в "истории событий" было пусто - ничего не приходило.
Баг пропадал сам если выставить пользователю все галки (Администратор, История, Команды, Загрузка, Играть голос) и перезапустить систему. Если галки потрогать, то всё опять отваливается. Возможно галки не причём, но после выполнения "ритуала" всё вроде работает. Чертовщина какая-то.
Debian, версия 1.1.0b, CONNECT
C_3AXAPOB
Сообщения: 507
Зарегистрирован: Ср июн 08, 2016 4:17 pm
Благодарил (а): 124 раза
Поблагодарили: 100 раз

Re: Модуль "Telegram"

Сообщение C_3AXAPOB » Пн окт 17, 2016 1:32 am

Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-10-17-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122

Что значит эта ошибка?

Появляется при выполнении вот этого срипта
$image_url="http://192.168.2.91/modules/thumb/thumb ... 554ch0h264";
$result=getURL($image_url,0);
$save_to="./cached/roomcamera.jpg"; // куда сохранять
SaveFile($save_to, $result);
//отправляем картинку в телеграмм
$img='C:/_majordomo/htdocs/cached/roomcamera.jpg';
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToAll($img);
Orange pi pc plus, megaD-2561, Xiaomi
--------------------------------------------------
http://connect.smartliving.ru/profile/908
skysilver
Сообщения: 2879
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 372 раза
Поблагодарили: 1656 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение skysilver » Пн окт 17, 2016 10:34 am

Varrcan писал(а):Еще проблема. Если написать в чат МД команду, то ответ приходит в telegram, но через чат telegram МД не реагирует никак. Даже стандартный Ping Pong не работает. Ping есть, а Pong нет. Никаких изменений в настройках telegram не делал, буквально неделю назад все работало. Что я делаю не так?
Colp писал(а):Я тоже ловил подобный баг, когда сообщения от Алисы в телеграм приходят, а наоборот - нет. В том числе не работал и пинг. Замечал тогда, что в "истории событий" было пусто - ничего не приходило.
Отпишусь и я. Очень похожая история. Возникает у меня уже второй раз. Неделями работает нормально - сообщения приходят и уходят моментально. Но в какой-то момент начинаются тормоза - возникают задержки в несколько минут (в среднем 2-3 минуты). Т.е. пишу в телеге команду (пинг), а ответ понг прилетает через пару минут. Аналогично в другу сторону - Алиса в чате пишет какой-нибудь say, а мне в телегу он прилетает спустя несколько минут. При этом еще симптом - сообщения стали как-то пачками приходить штоле, как будто копятся сначала, а потом разом все отправляется.

В первый раз все прошло довольно быстро - в течение суток все само стабилизировалось. Второй раз началось два дня назад и до сих пор проблема сохраняется. Цикл телеграма пробовал перезапускать - не помогло.
Думал, дело в серверах телеграма, но те же сообщения между телегами на телефонах ходят мгновенно.
Может, у них там апи поменялось или еще чего?

P.S.: перезагружать свой кубитрак не пробовал. Считаю, что не в нем проблема. У него уж аптайм 538 дней, и все остальные циклы работают стабильно.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
Eraser
Сообщения: 960
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 13 раз
Поблагодарили: 712 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Пн окт 17, 2016 10:41 am

У меня точно такие же проблемы, и я думаю что виноват провайдер...
Если подключиться телефоном к домашнему интернету по wifi, клиент телеграма начинает точно также себя вести
Пробовал весь трафик перенаправить через vpn через другие иностранные сервера, проблема исчезает
Как с этим бороться незнаю, пробовал использовать webhook, сообщения прилетают моментально, а вот с отправкой проблема осталась

Смотрел API телеграма, изменений нет, и ограничений использования не нашел

PS Провайдер МТС
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
Ответить