Александр Рыжов Posted January 28, 2016 Share Posted January 28, 2016 (edited) Можно организовать чат с роутером, словно вы находитесь в CLI кинетика. Для этого необходимо. Установить необходимые пакеты: opkg install bash curl dtach Скачать bash-скрипт, который будет выполнять функции бота Telegram: curl --output /opt/bin/bashbot.sh --insecure https://raw.githubusercontent.com/ryzhovau/telegram-bot-bash/master/opt/bin/bashbot.sh curl --output /opt/bin/JSON.sh --insecure https://raw.githubusercontent.com/ryzhovau/telegram-bot-bash/master/opt/bin/JSON.sh curl --output /opt/etc/init.d/S51bashbot --insecure https://raw.githubusercontent.com/ryzhovau/telegram-bot-bash/master/opt/etc/init.d/S51bashbot chmod +x /opt/bin/bashbot.sh chmod +x /opt/bin/JSON.sh chmod +x /opt/etc/init.d/S51bashbot Попросить робота @BotFather создать нового бота, в ответ получите токен для его авторизации. Вписать полученный токен между одинарными кавычками в строке TOKEN='' файла /opt/bin/bashbot.sh. Заменить в /opt/bin/bashbot.sh строчку *) msg="$MESSAGE";; на строчку *) msg=$(ndmq -p "$MESSAGE" -x);; Запустить на роутере бота, выполнив /opt/etc/init.d/S51bashbot start. Бот будет автоматически стартовать после перезагрузки роутера. Вопросы безопасности сознательно опускаю. К примеру, вы можете настроить бота так, чтобы он отвечал на сообщения только от определённого пользователя. Все обращению к боту фиксируются в файле /opt/var/log/bashbot.log. Приведённый пример бота — просто баловство, proof of concept. Если пожелаете, вы можете найти ему более серьёзное применение. Edited July 22, 2016 by Александр Рыжов 3 1 Quote Link to comment Share on other sites More sharing options...
vitalik6243 Posted March 8, 2016 Share Posted March 8, 2016 Есть возможно сделать скрипт более интересным образом к примеру чтобы при подключении к wifi приходила смс на телеграм, чет сам пытался не запустилось не чего. Quote Link to comment Share on other sites More sharing options...
emlen Posted June 27, 2016 Share Posted June 27, 2016 Доброго дня! А в этом боте можно свои кнопки сделать? Если да, то как? Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted June 27, 2016 Author Share Posted June 27, 2016 @BotFather рассказывает про кнопки в момент общения. Видимо, проглядели, когда создавали бота. Quote Link to comment Share on other sites More sharing options...
emlen Posted June 27, 2016 Share Posted June 27, 2016 @BotFather рассказывает про кнопки в момент общения. Видимо, проглядели, когда создавали бота. Ничего не получается(( Отправил пробные команды: help - Помощь top - Загрузка logtail - Последние команды , он ответил: Success! Command list updated., при этом ничего не изменилось, а еще вдруг непонятно отчего перестал запускаться сервис по /opt/etc/init.d/S51bashbot start, по /opt/bin/bashbot.sh запустился, роутер живет своей жизнью( P.S.: После ручного удаления bashbot.socket заработало.. Это из-за чего так было и что можно сделать, чтобы не повторялось? P.S.2: Появились типа кнопки, но не те о которых я говорил, я о таких как в ботах типа @clarabot Quote Link to comment Share on other sites More sharing options...
emlen Posted June 27, 2016 Share Posted June 27, 2016 (edited) вообщем, если я правильно понял для чего нужно "dtach -n /opt/var/bashbot.socket" , то я поменял эту строку на PREARGS="screen -dmS bashbot.socket". Как с dtach тормозов не наблюдаю P.S.: А как воспользоваться ботом для отправки сообщения по событию или в кроне? Edited June 29, 2016 by Guest Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted July 22, 2016 Author Share Posted July 22, 2016 В 27.06.2016 в 17:03, emlen сказал: P.S.: А как воспользоваться ботом для отправки сообщения по событию или в кроне? Достаточно одного wget'а. 1 Quote Link to comment Share on other sites More sharing options...
rigmad Posted September 5, 2016 Share Posted September 5, 2016 (edited) В 22.07.2016 в 16:27, Александр Рыжов сказал: Достаточно одного wget'а. Хотел сделать так, отредактировал скрипт с учетом специфики прошивки, отредактировал на использование wget-ssl, но ругается: ERROR: cannot verify api.telegram.org's certificate, issued by 'CN=Go Daddy Secure Certificate Authority - G2,OU=http://certs.godaddy.com/repository/,O=GoDaddy.com\\, Inc.,L=Scottsdale,ST=Arizona,C=US': Self-signed certificate encountered. Как пофиксить? Edited September 5, 2016 by rigmad Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted September 6, 2016 Author Share Posted September 6, 2016 8 часов назад, rigmad сказал: Как пофиксить? Добавить в ключи wget'a --no-check-certificate. Quote Link to comment Share on other sites More sharing options...
KorDen Posted September 6, 2016 Share Posted September 6, 2016 15 часов назад, Александр Рыжов сказал: Добавить в ключи wget'a --no-check-certificate. Не секурно же, лучше opkg install ca-certificates Quote Link to comment Share on other sites More sharing options...
doscloud Posted September 27, 2016 Share Posted September 27, 2016 Если я верно понял то строка, вырезает ник отправителя USER=$(echo $res | JSON.sh | egrep '\["result",0,"message","from","user"\]' | cut -f 2 | cut -d '"' -f 2) В логе в результате [2016.09.28_00:21:32][] /top Нужно заменить user на first_name USER=$(echo $res | JSON.sh | egrep '\["result",0,"message","from","first_name"\]' | cut -f 2 | cut -d '"' -f 2) В результате [2016.09.28_00:42:54][dcloud] /top Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted September 28, 2016 Author Share Posted September 28, 2016 В 07.09.2016 в 00:26, KorDen сказал: Не секурно же, лучше opkg install ca-certificates Боитесь, что кто-то перехватит скачивание скрипта на роутер? Ок, ваше право. 10 часов назад, doscloud сказал: Нужно заменить user на first_name Всё верно, ника у Telegram-пользователя может и не быть. Но есть ли толк в логе от его first_name — отнюдь не очевидно. Перед вами конструктор, можете лепить из него всё, что пожелаете. Quote Link to comment Share on other sites More sharing options...
doscloud Posted September 28, 2016 Share Posted September 28, 2016 1 минуту назад, Александр Рыжов сказал: Всё верно, ника у Telegram-пользователя может и не быть. Но есть ли толк в логе от его first_name — отнюдь не очевидно. На основе этой строчки делал проверку по нику, не вышло, вот и полез. Толк наверно чисто эстетический. Quote Link to comment Share on other sites More sharing options...
emlen Posted December 13, 2016 Share Posted December 13, 2016 подскажите пожалуйста, как можно перезагрузить кинетик с помощью команды боту, так, чтобы кинетик не попадал в бутлуп? Quote Link to comment Share on other sites More sharing options...
pitersidr Posted January 6, 2017 Share Posted January 6, 2017 (edited) Краткая инструкция: Для автоматизаций и распарсивания далее по вкусу))) 1. Написать в телеграмм пользователю @BotFather /newbot - создать бота, попросит придумать имя и ник (ник должен содержать слово "bot") /token - получить <API_ID> 2. Написать любоее сообщение своему боту, создать чат 3. По ссылке "https://api.telegram.org/bot<API_ID>/getUpdates" узнать <CHAT_ID> в поле "chat":"id": ХХХХХХХХ" 4. Самые простые способы Отправить сообщение: wget -O - --no-check-certificate "https://api.telegram.org/bott<API_ID>/sendMessage?chat_id=<CHAT_ID>&text=Привет мир" Отправить фото (должно быть доступно по ссылке интернета): wget -O - --no-check-certificate "https://api.telegram.org/bot<API_ID>/sendphoto?chat_id=<CHAT_ID>&photo=http://XXXXXXXXX.jpg" Получить отправленные боту сообщения: из ссылки в пункте 2 wget -O - --no-check-certificate "https://api.telegram.org/bot<API_ID>/getUpdates" Получить отправленную боту картинку: <file_path> - также можно узнать из ссылки в пункте 2 wget -O - --no-check-certificate "https://api.telegram.org/file/bot<API_ID>/<file_path>" <file_path> - также можно узнать из ссылки в пункте 2 Edited January 6, 2017 by pitersidr 2 1 Quote Link to comment Share on other sites More sharing options...
emlen Posted March 27, 2017 Share Posted March 27, 2017 Как на гиге отследить события прошивочного pptp впн-сервера (подключение/отключение) клиента, чтобы отправлять по телеграму? Возможно ли так же отправлять только критические события сислога? Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted March 27, 2017 Author Share Posted March 27, 2017 Можно фильтровать syslog налету и реагировать на определённые строки. tail -f /tmp/syslog.log | \ while read line ; do echo "do something with $line" done Quote Link to comment Share on other sites More sharing options...
emlen Posted March 27, 2017 Share Posted March 27, 2017 (edited) 10 минут назад, Александр Рыжов сказал: Можно фильтровать syslog налету и реагировать на определённые строки. tail -f /tmp/syslog.log | \ while read line ; do echo "do something with $line" done а эту штуку чтобы она как демон работала тоже как бэшбот в скрине запустить наверное надо? Edited March 27, 2017 by emlen Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted March 27, 2017 Author Share Posted March 27, 2017 Да, в screen. Под dtach можно не пытаться, в нём pipe'ы не работают. 1 Quote Link to comment Share on other sites More sharing options...
Panasoft Posted June 14, 2017 Share Posted June 14, 2017 On 28.01.2016 at 1:56 PM, Александр Рыжов said: Можно организовать чат с роутером, словно вы находитесь в CLI кинетика. Интересно, а можно такое сделать для Pidgin-а? Quote Link to comment Share on other sites More sharing options...
xandrum xandrum Posted September 23, 2017 Share Posted September 23, 2017 На Asus RT-AC66U тоже запустилось успешно) Quote Link to comment Share on other sites More sharing options...
Павел Posted December 21, 2017 Share Posted December 21, 2017 (edited) Доброго времени суток, эта строчка скрипта USER=$(echo $res | JSON.sh | egrep '\["result",0,"message","from","username"\]' | cut -f 2 | cut -d '"' -f 2) определяет имя пользователя пишушего боту. Подскажите как правильно прикрутить - чтоб бот общалься с одни юзером, а остольным, кто пишет ему, отправлял определенное сообщение. if then else, пробую сам , но увы не силен я в скриптах. или может добавить куда chat_id , чтолб только с одним юзером общавлся. Помогите пожалуйста. Все спасибо. вопрос закрыт. разобрался. Edited December 22, 2017 by Павел Разобрался Quote Link to comment Share on other sites More sharing options...
exared Posted December 23, 2017 Share Posted December 23, 2017 (edited) Цитата Подскажите как правильно прикрутить - чтоб бот общалься с одни юзером, а остольным, кто пишет ему, отправлял определенное сообщение Поздно заметил Ваш вопрос. Все-таки поделюсь. В своем проекте использовал следующую простую конструкцию, помещенную в самом конце скрипта: [ $USER = $NAMEA ] || send_message "$TARGET" "Sorry. Private bot" [ $USER = $NAMEA ] && send_message "$TARGET" "$msg" Заменив строку send_message "$TARGET" "$msg" Переменная NAMEA задается в начале скрипта и хранит значение Вашего username, взятого из Telegram Edited December 23, 2017 by exared 1 Quote Link to comment Share on other sites More sharing options...
Павел Posted December 23, 2017 Share Posted December 23, 2017 ага. спс . попробую так, Сам решил так. добавил еще одно условие if [ $USER = "тут имя" ]; then а потом далее оригинал скрипта if [ $OFFSET != 1 ]; then case $MESSAGE in .......................... ................................... *) msg="$MESSAGE";; esac send_message "$TARGET" "$msg" fi else send_message "$TARGET" "Соробщение ограничения." fi Quote Link to comment Share on other sites More sharing options...
exared Posted December 23, 2017 Share Posted December 23, 2017 Подскажите, как реализовать перенос строки в сообщениях от бота Telegram? Ни один из способов не работает: /n \n %0A /r/n Quote Link to comment Share on other sites More sharing options...
r13 Posted December 24, 2017 Share Posted December 24, 2017 В 23.12.2017 в 15:24, exared сказал: Подскажите, как реализовать перенос строки в сообщениях от бота Telegram? Ни один из способов не работает: /n \n %0A /r/n У меня работает просто enter в скрипте между ' ' типа: 'blablabla blablabla' в telegram прилетает 2 строки. 1 Quote Link to comment Share on other sites More sharing options...
Ульян Андреев Posted January 4, 2018 Share Posted January 4, 2018 Господа, подскажите пожалуйста, можно ли через telegram управлять (ставить на закачку) magnet ссылку в transmission? Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted January 4, 2018 Author Share Posted January 4, 2018 Конечно. Quote Link to comment Share on other sites More sharing options...
exared Posted January 9, 2018 Share Posted January 9, 2018 (edited) В 27.06.2016 в 08:30, emlen сказал: Доброго дня! А в этом боте можно свои кнопки сделать? Если да, то как? Добавьте в скрипт приведенную ниже функцию, предварительно задав новую переменную KMSG_URL: KMSG_URL=$URL'/sendMessage' function send_keyboard { local text="$1"; shift 1; local keyboard=init OLDIFS=$IFS; IFS=$(echo -en "\"") for f in $*;do [ "$f" != " " ] && local keyboard="$keyboard, [\"$f\"]";done IFS=$OLDIFS; local keyboard=${keyboard/init, /} res=$(curl -s "$KMSG_URL" --header "content-type: multipart/form-data" -F "chat_id=$TARGET" -F "text=$text" -F "reply_markup={\"keyboard\": [$keyboard],\"one_time_keyboard\": false}") } Скрытый текст Аргументы функции: первый - сообщение в чате, последующие - надписи на кнопках. При нажатии на кнопку соответствующая надпись может быть использована как команда. Поэтому кириллица в аргументах функции (кроме первого) нежелательна.Поле one_time_keyboard указывает клиенту скрыть или нет клавиатуру после использования (после нажатия на кнопку). Её по-прежнему можно будет открыть через иконку в поле ввода сообщения. По умолчаниюFalse Пример использования: send_keyboard "I can help you find and share classical music" "Get random music" "Send music to friends" Edited January 9, 2018 by exared 3 Quote Link to comment Share on other sites More sharing options...
emlen Posted February 24, 2018 Share Posted February 24, 2018 А как -то можно локальное фото отправлять?GIGA II Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.