Re: Модуль "Telegram"
Добавлено: Чт янв 18, 2018 8:00 am
Подскажите, можно как то в явном виде указать размер кнопки, чтобы данные не сокращались? А также хотелось бы выводить кнопки в несколько строк.
SPOILERSPOILER_SHOW
например такdirectman66 писал(а):Подскажите, можно как то в явном виде указать размер кнопки, чтобы данные не сокращались? А также хотелось бы выводить кнопки в несколько строк.
SPOILERSPOILER_SHOW
Код: Выделить всё
$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);конечно можно, но не думаю что кто-то возьмется реализовать, по крайней мере бесплатно, просто это не так легко, по сути нужно реализовать клиента телеграмм, только с одной единственной функцией пересылкиvitar78 писал(а):вот что я подумал а чтоб 2х разных ботов подружить и заставить слать друг другу сообщения можно ведь написать програмку которая будет подключатся к двум разным ботам и пересылать сообщения от одного другому, своего рода шлюз. это актуально для пересылки сообщений в алису от других ботов.
может кто то такое реализовать
Не знаю на сколько правильный, но вроде рабочий вариант:Sakoru писал(а):Подскажите как можно глобально разделять ответы пользователям в телеграме?
Так понимаю указанный метод
$this->sendMessageToUser($chat_id,"message");
работает только внутри модуля.
Возможно разделить ответы, прописанные шаблонах поведения?
Код: Выделить всё
setGlobal("ThisComputer.lastTgId", $chat_id); Код: Выделить всё
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); //уровень важности сигнала, тут уж как хотите)
}
alt.Maksimus писал(а):Не знаю на сколько правильный, но вроде рабочий вариант:Sakoru писал(а):Подскажите как можно глобально разделять ответы пользователям в телеграме?
Так понимаю указанный метод
$this->sendMessageToUser($chat_id,"message");
работает только внутри модуля.
Возможно разделить ответы, прописанные шаблонах поведения?
в Объекте ThisComputer добавляем свойство lastTgId (я так понял модуль телеграмма глобально не доступен, и id надо положить в общедоступное место)
далее в приложении Telegram добавить событие с кодомкак я понимаю эти события срабатывают при каждом получении сообщения ботом. и раз тут доступна переменная $chat_id то отсюда ее и запишем в свойство ThisComputer.lastTgIdКод: Выделить всё
setGlobal("ThisComputer.lastTgId", $chat_id);
далее в шаблонах поведения используем конструкциюв итоге получаем изолированный чат с домом в тг от других пользователей, ведь изначально, если в тг пишет один пользователь, другому пользователю в тг это сообщение не видно, но видно ответ системы, что собственно не к чему)Код: Выделить всё
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); //уровень важности сигнала, тут уж как хотите) }
Во первых, спасибо, как Вам, так и Автору модуля.immortal писал(а):у и код для погоды OpenWeatherMap используемый в командах