Александр Рыжов Опубликовано: 28 января, 2016 Share Опубликовано: 28 января, 2016 (изменено) Можно организовать чат с роутером, словно вы находитесь в 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. Если пожелаете, вы можете найти ему более серьёзное применение. Изменено 22 июля, 2016 пользователем Александр Рыжов 2 1 Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
vitalik6243 Опубликовано: 8 марта, 2016 Share Опубликовано: 8 марта, 2016 Есть возможно сделать скрипт более интересным образом к примеру чтобы при подключении к wifi приходила смс на телеграм, чет сам пытался не запустилось не чего. Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
emlen Опубликовано: 27 июня, 2016 Share Опубликовано: 27 июня, 2016 Доброго дня! А в этом боте можно свои кнопки сделать? Если да, то как? Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Александр Рыжов Опубликовано: 27 июня, 2016 Автор Share Опубликовано: 27 июня, 2016 @BotFather рассказывает про кнопки в момент общения. Видимо, проглядели, когда создавали бота. Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
emlen Опубликовано: 27 июня, 2016 Share Опубликовано: 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 Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
emlen Опубликовано: 27 июня, 2016 Share Опубликовано: 27 июня, 2016 (изменено) вообщем, если я правильно понял для чего нужно "dtach -n /opt/var/bashbot.socket" , то я поменял эту строку на PREARGS="screen -dmS bashbot.socket". Как с dtach тормозов не наблюдаю P.S.: А как воспользоваться ботом для отправки сообщения по событию или в кроне? Изменено 29 июня, 2016 пользователем Гость Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Александр Рыжов Опубликовано: 22 июля, 2016 Автор Share Опубликовано: 22 июля, 2016 В 27.06.2016 в 17:03, emlen сказал: P.S.: А как воспользоваться ботом для отправки сообщения по событию или в кроне? Достаточно одного wget'а. 1 Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
rigmad Опубликовано: 6 сентября, 2016 Share Опубликовано: 6 сентября, 2016 (изменено) В 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. Как пофиксить? Изменено 6 сентября, 2016 пользователем rigmad Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Александр Рыжов Опубликовано: 6 сентября, 2016 Автор Share Опубликовано: 6 сентября, 2016 8 часов назад, rigmad сказал: Как пофиксить? Добавить в ключи wget'a --no-check-certificate. Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
KorDen Опубликовано: 7 сентября, 2016 Share Опубликовано: 7 сентября, 2016 15 часов назад, Александр Рыжов сказал: Добавить в ключи wget'a --no-check-certificate. Не секурно же, лучше opkg install ca-certificates Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
doscloud Опубликовано: 27 сентября, 2016 Share Опубликовано: 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 Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Александр Рыжов Опубликовано: 28 сентября, 2016 Автор Share Опубликовано: 28 сентября, 2016 В 07.09.2016 в 00:26, KorDen сказал: Не секурно же, лучше opkg install ca-certificates Боитесь, что кто-то перехватит скачивание скрипта на роутер? Ок, ваше право. 10 часов назад, doscloud сказал: Нужно заменить user на first_name Всё верно, ника у Telegram-пользователя может и не быть. Но есть ли толк в логе от его first_name — отнюдь не очевидно. Перед вами конструктор, можете лепить из него всё, что пожелаете. Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
doscloud Опубликовано: 28 сентября, 2016 Share Опубликовано: 28 сентября, 2016 1 минуту назад, Александр Рыжов сказал: Всё верно, ника у Telegram-пользователя может и не быть. Но есть ли толк в логе от его first_name — отнюдь не очевидно. На основе этой строчки делал проверку по нику, не вышло, вот и полез. Толк наверно чисто эстетический. Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
emlen Опубликовано: 13 декабря, 2016 Share Опубликовано: 13 декабря, 2016 подскажите пожалуйста, как можно перезагрузить кинетик с помощью команды боту, так, чтобы кинетик не попадал в бутлуп? Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
pitersidr Опубликовано: 6 января, 2017 Share Опубликовано: 6 января, 2017 (изменено) Краткая инструкция: Для автоматизаций и распарсивания далее по вкусу))) 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 Изменено 6 января, 2017 пользователем pitersidr 2 1 Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
emlen Опубликовано: 27 марта, 2017 Share Опубликовано: 27 марта, 2017 Как на гиге отследить события прошивочного pptp впн-сервера (подключение/отключение) клиента, чтобы отправлять по телеграму? Возможно ли так же отправлять только критические события сислога? Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Александр Рыжов Опубликовано: 27 марта, 2017 Автор Share Опубликовано: 27 марта, 2017 Можно фильтровать syslog налету и реагировать на определённые строки. tail -f /tmp/syslog.log | \ while read line ; do echo "do something with $line" done Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
emlen Опубликовано: 27 марта, 2017 Share Опубликовано: 27 марта, 2017 (изменено) 10 минут назад, Александр Рыжов сказал: Можно фильтровать syslog налету и реагировать на определённые строки. tail -f /tmp/syslog.log | \ while read line ; do echo "do something with $line" done а эту штуку чтобы она как демон работала тоже как бэшбот в скрине запустить наверное надо? Изменено 27 марта, 2017 пользователем emlen Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Александр Рыжов Опубликовано: 27 марта, 2017 Автор Share Опубликовано: 27 марта, 2017 Да, в screen. Под dtach можно не пытаться, в нём pipe'ы не работают. 1 Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Panasoft Опубликовано: 14 июня, 2017 Share Опубликовано: 14 июня, 2017 On 28.01.2016 at 1:56 PM, Александр Рыжов said: Можно организовать чат с роутером, словно вы находитесь в CLI кинетика. Интересно, а можно такое сделать для Pidgin-а? Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
xandrum xandrum Опубликовано: 23 сентября, 2017 Share Опубликовано: 23 сентября, 2017 На Asus RT-AC66U тоже запустилось успешно) Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Павел Опубликовано: 21 декабря, 2017 Share Опубликовано: 21 декабря, 2017 (изменено) Доброго времени суток, эта строчка скрипта USER=$(echo $res | JSON.sh | egrep '\["result",0,"message","from","username"\]' | cut -f 2 | cut -d '"' -f 2) определяет имя пользователя пишушего боту. Подскажите как правильно прикрутить - чтоб бот общалься с одни юзером, а остольным, кто пишет ему, отправлял определенное сообщение. if then else, пробую сам , но увы не силен я в скриптах. или может добавить куда chat_id , чтолб только с одним юзером общавлся. Помогите пожалуйста. Все спасибо. вопрос закрыт. разобрался. Изменено 22 декабря, 2017 пользователем Павел Разобрался Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
exared Опубликовано: 23 декабря, 2017 Share Опубликовано: 23 декабря, 2017 (изменено) Цитата Подскажите как правильно прикрутить - чтоб бот общалься с одни юзером, а остольным, кто пишет ему, отправлял определенное сообщение Поздно заметил Ваш вопрос. Все-таки поделюсь. В своем проекте использовал следующую простую конструкцию, помещенную в самом конце скрипта: [ $USER = $NAMEA ] || send_message "$TARGET" "Sorry. Private bot" [ $USER = $NAMEA ] && send_message "$TARGET" "$msg" Заменив строку send_message "$TARGET" "$msg" Переменная NAMEA задается в начале скрипта и хранит значение Вашего username, взятого из Telegram Изменено 23 декабря, 2017 пользователем exared 1 Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Павел Опубликовано: 23 декабря, 2017 Share Опубликовано: 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 Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
exared Опубликовано: 23 декабря, 2017 Share Опубликовано: 23 декабря, 2017 Подскажите, как реализовать перенос строки в сообщениях от бота Telegram? Ни один из способов не работает: /n \n %0A /r/n Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
r13 Опубликовано: 24 декабря, 2017 Share Опубликовано: 24 декабря, 2017 В 23.12.2017 в 15:24, exared сказал: Подскажите, как реализовать перенос строки в сообщениях от бота Telegram? Ни один из способов не работает: /n \n %0A /r/n У меня работает просто enter в скрипте между ' ' типа: 'blablabla blablabla' в telegram прилетает 2 строки. 1 Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Ульян Андреев Опубликовано: 4 января, 2018 Share Опубликовано: 4 января, 2018 Господа, подскажите пожалуйста, можно ли через telegram управлять (ставить на закачку) magnet ссылку в transmission? Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Александр Рыжов Опубликовано: 4 января, 2018 Автор Share Опубликовано: 4 января, 2018 Конечно. Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
exared Опубликовано: 9 января, 2018 Share Опубликовано: 9 января, 2018 (изменено) В 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" Изменено 9 января, 2018 пользователем exared 3 Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
emlen Опубликовано: 25 февраля, 2018 Share Опубликовано: 25 февраля, 2018 А как -то можно локальное фото отправлять?GIGA II Цитата Ссылка на комментарий Поделиться на других сайтах More sharing options...
Рекомендуемые сообщения
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.