Перейти к содержанию

Рекомендуемые сообщения

Опубликовано (изменено)

Можно организовать чат с роутером, словно вы находитесь в CLI кинетика.

b92d38f5d243.png

Для этого необходимо.

  • Установить необходимые пакеты:
    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. Если пожелаете, вы можете найти ему более серьёзное применение.

Изменено пользователем Александр Рыжов
  • 1 месяц спустя...
  • Ответов 69
  • Создана
  • Последний ответ

Топ авторов темы

Опубликовано

Есть возможно сделать скрипт более интересным образом к примеру чтобы при подключении к wifi приходила смс на телеграм, чет сам пытался не запустилось не чего.

  • 3 месяца спустя...
Опубликовано
@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

Опубликовано (изменено)

:idea: вообщем, если я правильно понял для чего нужно "dtach -n /opt/var/bashbot.socket" , то я поменял эту строку на PREARGS="screen -dmS bashbot.socket". Как с dtach тормозов не наблюдаю :roll:

P.S.: А как воспользоваться ботом для отправки сообщения по событию или в кроне?

Изменено пользователем Гость
  • 1 месяц спустя...
Опубликовано (изменено)
В 22.07.2016 в 16:27, Александр Рыжов сказал:

Хотел сделать так, отредактировал скрипт с учетом специфики прошивки, отредактировал на использование 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.

Как пофиксить?

 

Изменено пользователем rigmad
  • 3 недели спустя...
Опубликовано

Если я верно понял то строка, вырезает ник отправителя

 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

 

 

Опубликовано
В 07.09.2016 в 00:26, KorDen сказал:

Не секурно же, лучше opkg install ca-certificates

Боитесь, что кто-то перехватит скачивание скрипта на роутер? Ок, ваше право.

10 часов назад, doscloud сказал:

Нужно заменить user на first_name

 

Всё верно, ника у Telegram-пользователя может и не быть. Но есть ли толк в логе от его first_name — отнюдь не очевидно.

 

Перед вами конструктор, можете лепить из него всё, что пожелаете.

Опубликовано
1 минуту назад, Александр Рыжов сказал:

Всё верно, ника у Telegram-пользователя может и не быть. Но есть ли толк в логе от его first_name — отнюдь не очевидно.

На основе этой строчки делал проверку по нику, не вышло, вот и полез. Толк наверно чисто эстетический.

  • 2 месяца спустя...
Опубликовано

подскажите пожалуйста, как можно перезагрузить кинетик с помощью команды боту, так, чтобы кинетик не попадал в бутлуп?

  • 4 недели спустя...
Опубликовано (изменено)

Краткая инструкция:  Для автоматизаций и распарсивания далее по вкусу))) 

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

 

 

Изменено пользователем pitersidr
  • 2 месяца спустя...
Опубликовано

Как на гиге отследить события прошивочного pptp впн-сервера (подключение/отключение) клиента, чтобы отправлять по телеграму? Возможно ли так же отправлять только критические  события сислога?

Опубликовано (изменено)
10 минут назад, Александр Рыжов сказал:

Можно фильтровать syslog налету и реагировать на определённые строки.


tail -f /tmp/syslog.log | \
while read line ; do
	echo "do something with $line"
done

 

а эту штуку чтобы она как демон работала тоже как бэшбот в скрине запустить наверное надо?

Изменено пользователем emlen
  • 2 месяца спустя...
Опубликовано
On 28.01.2016 at 1:56 PM, Александр Рыжов said:

Можно организовать чат с роутером, словно вы находитесь в CLI кинетика.

 

Интересно, а можно такое сделать для Pidgin-а?

  • 3 месяца спустя...
  • 2 месяца спустя...
Опубликовано (изменено)

Доброго времени суток,  эта строчка скрипта

USER=$(echo $res | JSON.sh | egrep '\["result",0,"message","from","username"\]' | cut -f 2 | cut -d '"' -f 2)

определяет  имя пользователя пишушего боту.

Подскажите как правильно прикрутить - чтоб бот общалься с одни юзером, а остольным, кто пишет ему, отправлял определенное сообщение.

if then else, пробую сам , но увы не силен я в скриптах.

или может добавить куда chat_id , чтолб только с одним юзером общавлся.

Помогите пожалуйста.

 

Все спасибо. вопрос закрыт. разобрался.

Изменено пользователем Павел
Разобрался
Опубликовано (изменено)
Цитата

Подскажите как правильно прикрутить - чтоб бот общалься с одни юзером, а остольным, кто пишет ему, отправлял определенное сообщение


Поздно заметил Ваш вопрос. Все-таки поделюсь.
В своем проекте использовал следующую простую конструкцию, помещенную в самом конце скрипта:

[ $USER = $NAMEA ] || send_message "$TARGET" "Sorry. Private bot"
[ $USER = $NAMEA ] && send_message "$TARGET" "$msg"

Заменив строку

send_message "$TARGET" "$msg"
  Переменная NAMEA задается в начале скрипта и хранит значение Вашего username, взятого из Telegram
Изменено пользователем exared
Опубликовано

ага. спс . попробую так,

Сам решил так.

добавил еще одно условие

if [ $USER = "тут имя" ]; then

а потом далее оригинал скрипта

        if [ $OFFSET != 1 ]; then
                case $MESSAGE in
..........................

...................................
                    *) msg="$MESSAGE";;

                esac
                send_message "$TARGET" "$msg"
            fi
        else

            send_message "$TARGET" "Соробщение ограничения."

          fi 

 

Опубликовано

Подскажите, как реализовать перенос строки в сообщениях от бота Telegram? Ни один из способов не работает: /n \n %0A /r/n

Опубликовано
В 23.12.2017 в 15:24, exared сказал:

Подскажите, как реализовать перенос строки в сообщениях от бота Telegram? Ни один из способов не работает: /n \n %0A /r/n

У меня работает просто enter в скрипте между ' '

типа:

'blablabla
blablabla'

в telegram прилетает 2 строки.

  • 2 недели спустя...
Опубликовано (изменено)
В 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}")
}
Скрытый текст

c87484e3e4258cd7b4bfe58d0f93b829.png


Аргументы функции: первый - сообщение в чате, последующие - надписи на кнопках. При нажатии на кнопку соответствующая надпись может быть использована как команда. Поэтому кириллица в аргументах функции (кроме первого) нежелательна.
Поле one_time_keyboard указывает клиенту скрыть или нет клавиатуру после использования (после нажатия на кнопку). Её по-прежнему можно будет открыть через иконку в поле ввода сообщения. По умолчаниюFalse
Пример использования:

send_keyboard "I can help you find and share classical music" "Get random music" "Send music to friends"



 

Изменено пользователем exared
  • 1 месяц спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.