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

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

Модератор: immortal

directman66
Сообщения: 2800
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 »

Подскажите, можно как то в явном виде указать размер кнопки, чтобы данные не сокращались? А также хотелось бы выводить кнопки в несколько строк.
SPOILERSPOILER_SHOW
kn.jpg
kn.jpg (21.27 КБ) 7617 просмотров
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser »

directman66 писал(а):Подскажите, можно как то в явном виде указать размер кнопки, чтобы данные не сокращались? А также хотелось бы выводить кнопки в несколько строк.
SPOILERSPOILER_SHOW
kn.jpg
например так

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

$objects=getObjectsByClass("SControllers");
//print_r($objects);
foreach($objects as $obj) {
    $state = $off;
     if (gg($obj['TITLE'].".status") == 1)
         $state = $on;
    $option[] = $telegram_module->buildInlineKeyboardButton($text=$state.getObject($obj['TITLE'])->description,"","CallbackSwitch_".$obj['TITLE'],"");
}

$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $telegram_module->buildInlineKeyBoard($option);

$content = array('chat_id' => $chat_id, 'text' => "Управление светом (<b>".gg("Sensor_power01.value")."Wt</b>):", 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
или так

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

$option = array (array($this->buildInlineKeyboardButton($text="Люстра зала","","salonLuzAlta",""),
                                 $this->buildInlineKeyboardButton($text="Бра зала","","salonLamp","")),
             array($this->buildInlineKeyboardButton($text="Люстра столовой","","mesonLuz",""),
                                $this->buildInlineKeyboardButton($text="Подсветка кухни","","cocinaLampXiaomi","") ) );
$keyb = $this->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Управление светом:", 'reply_markup' => $keyb);
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
vitar78
Сообщения: 128
Зарегистрирован: Пт июл 15, 2016 3:12 am

Re: Модуль "Telegram"

Сообщение vitar78 »

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

Re: Модуль "Telegram"

Сообщение Eraser »

vitar78 писал(а):вот что я подумал а чтоб 2х разных ботов подружить и заставить слать друг другу сообщения можно ведь написать програмку которая будет подключатся к двум разным ботам и пересылать сообщения от одного другому, своего рода шлюз. это актуально для пересылки сообщений в алису от других ботов.
может кто то такое реализовать
конечно можно, но не думаю что кто-то возьмется реализовать, по крайней мере бесплатно, просто это не так легко, по сути нужно реализовать клиента телеграмм, только с одной единственной функцией пересылки
а для чего вообще может понадобится такое?
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
vitar78
Сообщения: 128
Зарегистрирован: Пт июл 15, 2016 3:12 am

Re: Модуль "Telegram"

Сообщение vitar78 »

для пересылки сообщений от одного бота к другому
например
https://uip.me/2016/04/50-popular-telegram-bots/
https://protelegram.ru/2016/12/13/top_1 ... gram_2016/
позволит как я понимаю взаимодействовать алисе с другими ботами
а дальше всё от нашей фантазии
Sakoru
Сообщения: 2
Зарегистрирован: Сб янв 20, 2018 6:29 am

Re: Модуль "Telegram"

Сообщение Sakoru »

Подскажите как можно глобально разделять ответы пользователям в телеграме?
Так понимаю указанный метод
$this->sendMessageToUser($chat_id,"message");
работает только внутри модуля.

Возможно разделить ответы, прописанные шаблонах поведения?
alt.Maksimus
Сообщения: 9
Зарегистрирован: Вс янв 14, 2018 7:43 am

Re: Модуль "Telegram"

Сообщение alt.Maksimus »

Sakoru писал(а):Подскажите как можно глобально разделять ответы пользователям в телеграме?
Так понимаю указанный метод
$this->sendMessageToUser($chat_id,"message");
работает только внутри модуля.

Возможно разделить ответы, прописанные шаблонах поведения?
Не знаю на сколько правильный, но вроде рабочий вариант:
в Объекте ThisComputer добавляем свойство lastTgId (я так понял модуль телеграмма глобально не доступен, и id надо положить в общедоступное место)

далее в приложении Telegram добавить событие с кодом

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

setGlobal("ThisComputer.lastTgId", $chat_id); 
как я понимаю эти события срабатывают при каждом получении сообщения ботом. и раз тут доступна переменная $chat_id то отсюда ее и запишем в свойство ThisComputer.lastTgId

далее в шаблонах поведения используем конструкцию

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

include_once(DIR_MODULES . 'telegram/telegram.class.php'); //подключаем класс
$telegram_module = new telegram(); //инициализируем телеграм и записываем в переменную
$tgId = getGlobal("ThisComputer.lastTgId"); // записываем в переменную значение $chat_id
if ( $tgId ) { // проверяем, если сообщение было с тг, то отвечаем этому же пользователю в тг
 $telegram_module->sendMessageToUser($tgId ,"текст");
 setGlobal("ThisComputer.lastTgId", "");  //после отправки сообщения в тг, чистим переменную с $chat_id
} else { // иначе, если сообщение не с тг, то отвечаем в общий чат
 say("текст",2); //уровень важности сигнала, тут уж как хотите)
}
 
в итоге получаем изолированный чат с домом в тг от других пользователей, ведь изначально, если в тг пишет один пользователь, другому пользователю в тг это сообщение не видно, но видно ответ системы, что собственно не к чему)
PS это своего рода костыль, было бы клевое, если автор это как то в глобальном плане реализует
Последний раз редактировалось alt.Maksimus Сб янв 20, 2018 10:33 am, всего редактировалось 1 раз.
Sakoru
Сообщения: 2
Зарегистрирован: Сб янв 20, 2018 6:29 am

Re: Модуль "Telegram"

Сообщение Sakoru »

alt.Maksimus писал(а):
Sakoru писал(а):Подскажите как можно глобально разделять ответы пользователям в телеграме?
Так понимаю указанный метод
$this->sendMessageToUser($chat_id,"message");
работает только внутри модуля.

Возможно разделить ответы, прописанные шаблонах поведения?
Не знаю на сколько правильный, но вроде рабочий вариант:
в Объекте ThisComputer добавляем свойство lastTgId (я так понял модуль телеграмма глобально не доступен, и id надо положить в общедоступное место)

далее в приложении Telegram добавить событие с кодом

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

setGlobal("ThisComputer.lastTgId", $chat_id); 
как я понимаю эти события срабатывают при каждом получении сообщения ботом. и раз тут доступна переменная $chat_id то отсюда ее и запишем в свойство ThisComputer.lastTgId

далее в шаблонах поведения используем конструкцию

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

include_once(DIR_MODULES . 'telegram/telegram.class.php'); //подключаем класс
$telegram_module = new telegram(); //инициализируем телеграм и записываем в переменную
$tgId = getGlobal("ThisComputer.lastTgId"); // записываем в переменную значение $chat_id
if ( $tgId ) { // проверяем, если сообщение было с тг, то отвечаем этому же пользователю в тг
 $telegram_module->sendMessageToUser($tgId ,"текст");
 setGlobal("ThisComputer.lastTgId", "");  //после отправки сообщения в тг, чистим переменную с $chat_id
} else { // иначе, если сообщение не с тг, то отвечаем в общий чат
 say("текст",2); //уровень важности сигнала, тут уж как хотите)
}
 
в итоге получаем изолированный чат с домом в тг от других пользователей, ведь изначально, если в тг пишет один пользователь, другому пользователю в тг это сообщение не видно, но видно ответ системы, что собственно не к чему)

Спасибо идею и особенно за подробный ответ. Ответы разделяются по юзерам, что определенно радует) :)
Logrus
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

Re: Модуль "Telegram"

Сообщение Logrus »

immortal писал(а):у и код для погоды OpenWeatherMap используемый в командах
Во первых, спасибо, как Вам, так и Автору модуля.
маленькие уточнения, с апи опенвейзер
ветер.PNG
ветер.PNG (9.65 КБ) 7412 просмотров
$unit = 'metric';
т.е. скорость в м/с, направление откуда дует, есть еще использование в аэронавигации там используют наоборот
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
cudgel
Сообщения: 1
Зарегистрирован: Чт янв 25, 2018 10:49 pm

Re: Модуль "Telegram"

Сообщение cudgel »

Установил сервер на Windows 7 64-bit, при попытке установить модуль telegram пишет:

Warning: include_once(./modules/telegram/telegram.class.php): failed to open stream: No such file or directory in C:\_majordomo\htdocs\modules\control_modules\control_modules.class.php on line 87

Warning: include_once(): Failed opening './modules/telegram/telegram.class.php' for inclusion (include_path='.;C:\_majordomo\server\php\PEAR') in C:\_majordomo\htdocs\modules\control_modules\control_modules.class.php on line 87

Что не так с виндовс? Версия сервера 110b.
Ответить