Александр Рыжов Posted January 28, 2016 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
vitalik6243 Posted March 8, 2016 Posted March 8, 2016 Есть возможно сделать скрипт более интересным образом к примеру чтобы при подключении к wifi приходила смс на телеграм, чет сам пытался не запустилось не чего. Quote
emlen Posted June 27, 2016 Posted June 27, 2016 Доброго дня! А в этом боте можно свои кнопки сделать? Если да, то как? Quote
Александр Рыжов Posted June 27, 2016 Author Posted June 27, 2016 @BotFather рассказывает про кнопки в момент общения. Видимо, проглядели, когда создавали бота. Quote
emlen Posted June 27, 2016 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
emlen Posted June 27, 2016 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
Александр Рыжов Posted July 22, 2016 Author Posted July 22, 2016 В 27.06.2016 в 17:03, emlen сказал: P.S.: А как воспользоваться ботом для отправки сообщения по событию или в кроне? Достаточно одного wget'а. 1 Quote
rigmad Posted September 5, 2016 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
Александр Рыжов Posted September 6, 2016 Author Posted September 6, 2016 8 часов назад, rigmad сказал: Как пофиксить? Добавить в ключи wget'a --no-check-certificate. Quote
KorDen Posted September 6, 2016 Posted September 6, 2016 15 часов назад, Александр Рыжов сказал: Добавить в ключи wget'a --no-check-certificate. Не секурно же, лучше opkg install ca-certificates Quote
doscloud Posted September 27, 2016 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
Александр Рыжов Posted September 28, 2016 Author Posted September 28, 2016 В 07.09.2016 в 00:26, KorDen сказал: Не секурно же, лучше opkg install ca-certificates Боитесь, что кто-то перехватит скачивание скрипта на роутер? Ок, ваше право. 10 часов назад, doscloud сказал: Нужно заменить user на first_name Всё верно, ника у Telegram-пользователя может и не быть. Но есть ли толк в логе от его first_name — отнюдь не очевидно. Перед вами конструктор, можете лепить из него всё, что пожелаете. Quote
doscloud Posted September 28, 2016 Posted September 28, 2016 1 минуту назад, Александр Рыжов сказал: Всё верно, ника у Telegram-пользователя может и не быть. Но есть ли толк в логе от его first_name — отнюдь не очевидно. На основе этой строчки делал проверку по нику, не вышло, вот и полез. Толк наверно чисто эстетический. Quote
emlen Posted December 13, 2016 Posted December 13, 2016 подскажите пожалуйста, как можно перезагрузить кинетик с помощью команды боту, так, чтобы кинетик не попадал в бутлуп? Quote
pitersidr Posted January 6, 2017 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
emlen Posted March 27, 2017 Posted March 27, 2017 Как на гиге отследить события прошивочного pptp впн-сервера (подключение/отключение) клиента, чтобы отправлять по телеграму? Возможно ли так же отправлять только критические события сислога? Quote
Александр Рыжов Posted March 27, 2017 Author Posted March 27, 2017 Можно фильтровать syslog налету и реагировать на определённые строки. tail -f /tmp/syslog.log | \ while read line ; do echo "do something with $line" done Quote
emlen Posted March 27, 2017 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
Александр Рыжов Posted March 27, 2017 Author Posted March 27, 2017 Да, в screen. Под dtach можно не пытаться, в нём pipe'ы не работают. 1 Quote
Panasoft Posted June 14, 2017 Posted June 14, 2017 On 28.01.2016 at 1:56 PM, Александр Рыжов said: Можно организовать чат с роутером, словно вы находитесь в CLI кинетика. Интересно, а можно такое сделать для Pidgin-а? Quote
xandrum xandrum Posted September 23, 2017 Posted September 23, 2017 На Asus RT-AC66U тоже запустилось успешно) Quote
Павел Posted December 21, 2017 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
exared Posted December 23, 2017 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
Павел Posted December 23, 2017 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
exared Posted December 23, 2017 Posted December 23, 2017 Подскажите, как реализовать перенос строки в сообщениях от бота Telegram? Ни один из способов не работает: /n \n %0A /r/n Quote
r13 Posted December 24, 2017 Posted December 24, 2017 В 23.12.2017 в 15:24, exared сказал: Подскажите, как реализовать перенос строки в сообщениях от бота Telegram? Ни один из способов не работает: /n \n %0A /r/n У меня работает просто enter в скрипте между ' ' типа: 'blablabla blablabla' в telegram прилетает 2 строки. 1 Quote
Ульян Андреев Posted January 4, 2018 Posted January 4, 2018 Господа, подскажите пожалуйста, можно ли через telegram управлять (ставить на закачку) magnet ссылку в transmission? Quote
exared Posted January 9, 2018 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
emlen Posted February 24, 2018 Posted February 24, 2018 А как -то можно локальное фото отправлять?GIGA II Quote
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.