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

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

Модератор: immortal

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

Re: Модуль "Telegram"

Сообщение directman66 » Чт янв 18, 2018 8:00 am

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

Re: Модуль "Telegram"

Сообщение Eraser » Чт янв 18, 2018 8:05 am

directman66 писал(а):Подскажите, можно как то в явном виде указать размер кнопки, чтобы данные не сокращались? А также хотелось бы выводить кнопки в несколько строк.
СпойлерПоказать
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);
За это сообщение автора Eraser поблагодарил:
directman66 (Чт янв 18, 2018 8:41 am)
Рейтинг: 1.16%
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
vitar78
Сообщения: 128
Зарегистрирован: Пт июл 15, 2016 3:12 am
Благодарил (а): 6 раз
Поблагодарили: 2 раза

Re: Модуль "Telegram"

Сообщение vitar78 » Пт янв 19, 2018 12:02 pm

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

Re: Модуль "Telegram"

Сообщение Eraser » Пт янв 19, 2018 12:53 pm

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

Re: Модуль "Telegram"

Сообщение vitar78 » Пт янв 19, 2018 3:41 pm

для пересылки сообщений от одного бота к другому
например
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
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Модуль "Telegram"

Сообщение Sakoru » Сб янв 20, 2018 7:21 am

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

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

Re: Модуль "Telegram"

Сообщение alt.Maksimus » Сб янв 20, 2018 10:14 am

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 раз.
За это сообщение автора alt.Maksimus поблагодарили (всего 2):
Sakoru (Сб янв 20, 2018 10:19 am) • Logrus (Сб янв 20, 2018 10:46 am)
Рейтинг: 2.33%
Sakoru
Сообщения: 2
Зарегистрирован: Сб янв 20, 2018 6:29 am
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Модуль "Telegram"

Сообщение Sakoru » Сб янв 20, 2018 10:29 am

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); //уровень важности сигнала, тут уж как хотите)
}
 
в итоге получаем изолированный чат с домом в тг от других пользователей, ведь изначально, если в тг пишет один пользователь, другому пользователю в тг это сообщение не видно, но видно ответ системы, что собственно не к чему)

Спасибо идею и особенно за подробный ответ. Ответы разделяются по юзерам, что определенно радует) :)
За это сообщение автора Sakoru поблагодарил:
vitosmaxim80sad145 (Пт окт 23, 2020 9:21 am)
Рейтинг: 1.16%
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Модуль "Telegram"

Сообщение Logrus » Вс янв 21, 2018 8:40 am

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

Re: Модуль "Telegram"

Сообщение cudgel » Чт янв 25, 2018 11:04 pm

Установил сервер на 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.
Ответить