Плагин Telegram
-
Добрый день. Использую сценарии для работы с плагином. Команда передается по каналу аналогового устройства.
И если 1 участник пишет команду то ответ видят все участники. Как можно сделать что бы ответ приходил только тому кто написал команду ?/** * @name Telegram InHome * @desc * @version 4 */ const telegram_comand = Device("telegram_comand"); const InHome = Device("InHome"); startOnChange([telegram_comand]); script({ start() { if (telegram_comand.value == "#/inhome") { InHome.turnOnSaveAuto(); this.info("telegram","OWNER",`С возвращением домой ;-)`); } if (telegram_comand.value == "#/inwork") { InHome.turnOffSaveAuto(); this.info("telegram","OWNER",`Охрана: Вкл. Отопление: Эко-режим.`); } } })
-
Случайно добавил в устройство, привязанное к плагину Telegramm единицу измерения "щ". Не знаю как удалить. Любое изменение заблокировано:
причем, если отвязать устройство от всех сценариев и плагинов ошибка сохраняется.
Получилось отвязать только следующим алгоритмом:- Убираем единицу измерения, сохраниться возможности нет
- Переключаемся на другую вкладку (экраны, виджиты и тд) поле единица измерения очистится
- Перезапускам IH, после этого единица измерения не отображается
-
@dimkrasiy Добрый день, пока можно сделать в ручном режиме так:
/** * @name Telegram InHome * @desc * @version 4 */ const telegram_comand = Device("telegram_comand"); const InHome = Device("InHome"); startOnChange([telegram_comand]); script({ start() { if (telegram_comand.value == "#/inhome") { InHome.turnOnSaveAuto(); this.mes(telegram_comand.userid, `С возвращением домой ;-)`); } if (telegram_comand.value == "#/inwork") { InHome.turnOffSaveAuto(); this.mes(telegram_comand.userid, `Охрана: Вкл. Отопление: Эко-режим.`); } }, mes(id, txt) { const users = {}; users[78945] = 'admin'; // users[tid] = 'ihuser', сопоставьте telegram id и пользователя в системе users[78946] = 'user1'; users[78947] = 'user2'; users[78948] = 'user3'; this.info("telegram", users[id] || 'not found', txt); } })
Вам нужно будет указать
telegram user id
(можно посмотреть в адресах информирования) и пользователя в системе, тогда ответ придет тому кто написал команду
-
@homa Добрый день, спасибо за баг-репорт
-
Добрый день,
По согласованию с Генпрокуратурой Роскомнадзор снимает требования по ограничению доступа к Telegram
Для более стабильной и быстрой работы плагина, настройку
Прокси
можно отключить.
-
Пользователь @dev написал в Плагин Telegram:
Добрый день, доступно обновление плагина 0.0.12
-
Исправлена логика отправки сообщений
-
Отправка снапшотов видеокамеры в сообщениях.
-
Отправка изображений (файлов) в сообщениях
-
Добавлена обработка входящих сообщений
Отправить текст:
/** * @name Script 1 * @desc * @version 4 */ script({ start() { this.info("telegram","OWNER", { txt: 'Hello world!' }); } })
Отправить изображение:
/** * @name Script 2 * @desc * @version 4 */ script({ start() { this.info("telegram","OWNER", { txt: 'test img', img: '/home/sadm/images/test.jpg' }); } })
Отправить снапшот:
Добрый день. Подскажите пожалуйста, можно в примере " получить фото" использовать не имя файла, а диапазон имён? Объясню. У меня есть видео сервер. Он сам делает скриншот, отправляет в файлохранилище. И каждый снимок именуют номер потока и время. Через плагин сств не получается взять снапшот потому что запрос получается вида: 127.0.0.1:56555/video.jpg( и каждый раз рандом число) stream 0s1. Я настроил в снапшотов периодическое удаление фото. Как мне получить фото зная только часть имени. Типа channel1s1xxx, где ххх порядковый номер. Спасибо.
-
-
@Alex-Kupriyanov
Ещё раз здравствуйте. Получилось как-то не очень.
/**- @name Script 2
- @desc
- @version 4
*/
const SMOTION_1_1 = Device("SMOTION_1_1");
startOnChange([SMOTION_1_1]);
script({
start() {
if (SMOTION_1_1.isOn()) {
this.info("telegram","OWNER", { txt: 'Гостиная', img: '/var/www/dietpi_userdata/snapshot//channel1s1001M.jpg' });
this.startTimer("T1",10,"onTimerT1");
}
},
onTimerT1() {
this.execOS(find /var/www/dietpi_userdata/snapshot/ . -name "channel1s100*" -type f -delete \;
);
}
})
-
Пользователь @sergeyygr написал в Плагин Telegram:
@dev:
Написал. Вероятно не воспринимает, до загрузки IH дело не доходит, OS до конца не загружается :oops:
Вылечил! Отсоединил lan, вошел через 127.0.0.1, удалил сценарий, все встало на место. Адреналинчику хватнул
Добрый день, здорово, что получилось, простите за некорректный пример, завтра предложим рабочий вариант
А рабочий вариант будет?
/**
- @name Перезагрузка_IHPRO
- @desc перезагружает оболочку ihpro
- @version 4
*/
const telegram_bot_1 = Device("telegram_bot_1");
startOnChange([telegram_bot_1]);
script({
start() {
if (telegram_bot_1.value == "restart") {
this.startTimer("T1",10,"onTimerT1");
}
},
onTimerT1() {
this.execOS(systemctl restart intrahouse-c
);
}
})/**
- @name Перезагрузка
- @desc перезагружает систему
- @version 4
*/
const telegram_bot_1 = Device("telegram_bot_1");
startOnChange([telegram_bot_1]);
script({
start() {
if (telegram_bot_1.value == "reboot") {
this.startTimer("T1",10,"onTimerT1");
}
},
onTimerT1() {
this.execOS(sudo reboot
);
}
})
-
переписал this.execOS : this.execOS(
cd /mnt/dietpi_userdata/snapshot/ && n=1; for f in *.jpg; do mv "$f" "$n.jpg"; n=$((n+++1)); done; cd;
);
-
Пользователь @Alex-Kupriyanov написал в Плагин Telegram:
переписал this.execOS : this.execOS(
cd /mnt/dietpi_userdata/snapshot/ && n=1; for f in *.jpg; do mv "$f" "$n.jpg"; n=$((n+++1)); done; cd;
);this.execOS(
cd /mnt/SHINOBI/dietpi_userdata/snapshot/ && find . -name 'channel1s*.jpg' -printf "mv '%p' '%h/%TY-%Tm-%Td+%TH:%TM:%TS_%f'\n" | sh
);
-
Здравствуйте.
Как предать в плагин telegram свое значение не img а video?
this.info("telegram","OWNER", { txt: 'Движение!!!', img: '/tmp/output.mp4'});
-
Коллеги, в Cherry при старте системы сценарием формируются telegram-уведомления, но они не приходят... Push-сообщения прилетают!
-
@Alex_Jet Добрый день, попробуйте отключить прокси, в настройках плагина
-
Добрый день!
Написал скрипт/** * @name Тестовый сценарий телеграмм * @desc * @version 4 */ const inc_msg = Device("Telegram_inc_msg"); startOnChange(inc_msg); script({ start() { if (inc_msg.value=="123") { this.info("telegram","OWNER", {txt: '321'}); } else { this.info("telegram","OWNER", {txt:'не понял :('}); } } });
Если отправляю в Бот "123", то в ответ получаю 2 строки: "321" и "не понял :(".
Если от отправляю что-то другое, то получаю 2 раза "не понял :(".Явно ошибка какая-то глупая.
Но какая?
-
То, что бот в канале пишет не является для скрипта таким же inc_msg ?
В этом случае все всегда заканчивается на "не понял". А потом уже inc_msg не меняется (остается "не понял"), поэтому до бесконечности скрипт не продолжается.
123 - 321
321 - не понял
не понял - не понял (а это не изменение предыдущего значения)
-
Пользователь @Erik написал в Плагин Telegram:
То, что бот в канале пишет не является для скрипта таким же inc_msg ?
В этом случае все всегда заканчивается на "не понял". А потом уже inc_msg не меняется (остается "не понял"), поэтому до бесконечности скрипт не продолжается.
123 - 321
321 - не понял
не понял - не понял (а это не изменение предыдущего значения)Идея хорошая.
Спасибо!
Но как тогда обрабатывать такую ситуацию если сообщений от бота может быть достаточно много.В самом плагине в incoming_message, в значении с канала, указано именно то что я отправлял боту. т.е. "321" и "не понял" так не появляется...
Но обработка только по условиям "==" не дублирует сообщения
-
Добрый день!
Подскажите, пожалуйста, как сделать так что бы если я создаю групповой чат (группу) с Ботом и пишу ему в нем, что бы он в нем и отвечал (сейчас я пишу в группе, а отвечает он мне лично)?и второй вопрос, как ограничить пользователей с которыми он может взаимодействовать?
-
Немного подразобрался/вспомнил.
В "адреса для информирования" внес своего пользователя Telegram и id группы.
Теперь бот отвечает и в группу и мне лично.
Хотелось бы что бы отвечал только в группу.