![]() |
|
|
|
|
#1 |
|
Senior Member
Регистрация: 20.01.2015
Сообщений: 312
Вес репутации: 444 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Наткнулся на полезный проект -
https://github.com/ZigFisher/Glutini...master/tg-bot1 не упускаю возможности поделиться с общественностью Для тех кто понимает, можно прикрутить любые скрипты на любые команды в телеграмм. Чтобы установить нужно просто раскидать по папкам содержимое files, не забыть дать исполняемым скриптам права на исполнение. Из зависимостей нужен curl. потом редактируем etc/config/telegram option token - токен бота option rupor - id группы option start меняем на единичку, если нужно запускать. Сначала создаем группу, потом узнаем ее ID, прописываем его в конфиг бота, перезапускаем, после этого можно добавлять бота в группу. в папке usr/bin - примеры скриптов, можно редактировать для собственных целей. Последний раз редактировалось solalex; 02.12.2017 в 18:51. |
|
|
|
|
|
#2 |
|
Junior Member
Регистрация: 06.01.2018
Адрес: Петербург
Сообщений: 4
Вес репутации: 0 ![]() |
Отпишусь пожалуй тут.
Заинтересовал меня этот проект тем что практически ничего на OpenWRT не нужно ставить лишнего из зависимостей действительно только curl и jsonfilter. Обычный sh -скрипт. Работать сразу он у меня правда не захотел. Тк скрипт написан для общения тет а тет и не обрабатывает запросы если они идут из канала. Плюс небольшие помарки в скрипте и он не парсил json строку ответа правильно. Удалось таки разобраться что к чему. Не очень я силен в скриптах sh, так что пришлось немного повозиться. Теперь все работает и бот работает именно так как задумал автор. Если кому-то нужно могу подсказать что к чему. |
|
|
|
|
|
#3 | |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
|
|
|
|
|
|
|
#4 |
|
Junior Member
Регистрация: 06.01.2018
Адрес: Петербург
Сообщений: 4
Вес репутации: 0 ![]() |
Вот подправленный скрипт. Все вместе, весь проект, zip-архиве telegram_bot.zip или отдельно только скрипт бота -
Развернуть для просмотраКод:
#!/bin/sh
#
PATH='/usr/bin:/usr/sbin:/bin:/sbin'
token=`uci get telegram.bot.token`
rupor=`uci get telegram.bot.rupor`
start=`uci get telegram.bot.start`
api="https://api.telegram.org/bot$token"
offset_file=/tmp/telegram_offset
if [ "$start" == "0" ]; then
echo "Launch of the Telegram_bot is not allowed." | logger -t "telegram_bot" -p daemon.info
exit 1
fi
sleep 10
#keyboard='{"keyboard": [["/snap \uD83D\uDCF7","/guard \uD83D\uDC6E","/relay \uD83D\uDCA1"],["/system \uD83D\uDCCA","/reboot \uD83D\uDCA9","/menu \uD83D\uDD25"]],"resize_keyboard":true,"one_time_keyboard":false}'
curl -k -s -X POST -H "Charset: UTF-8" $api/sendMessage -d chat_id=$rupor -d parse_mode=Markdown --data-urlencode text="Router started." >/dev/null 2>&1
curl -k -s -X POST -H "Charset: UTF-8" $api/sendMessage -d chat_id=$rupor -d "text=Please insert command:" >/dev/null 2>&1
curl -k -s -X POST -H "Charset: UTF-8" $api/sendMessage -d chat_id=$rupor -d "text=/guard /menu /reboot" >/dev/null 2>&1
curl -k -s -X POST -H "Charset: UTF-8" $api/sendMessage -d chat_id=$rupor -d "text=/relay /snap /system" >/dev/null 2>&1
#-d \"reply_markup=${keyboard}\"
offset=0
if [ -f "$offset_file" ]; then
offset=$( cat $offset_file )
else
echo $offset > $offset_file
fi
reply_to_msg () {
msg_id=$1
origin=$2
eval toReturn="$3"
curl -k -s -X POST -H "Charset: UTF-8" $api/sendMessage -d reply_to_message_id=$msg_id -d chat_id=$origin -d parse_mode=HTML --data-urlencode text="$toReturn" >/dev/null 2>&1
}
while [ true ]
do
updates=$(curl -s -k -X GET $api/getUpdates?offset=$offset)
status=$(jsonfilter -s "$updates" -e '$.ok')
if [ $status = 'true' ]; then
update_ids=$(jsonfilter -s "$updates" -e '$.result[*].update_id')
for update_id in $update_ids
do
offset=$((update_id+1))
echo $offset > $offset_file
origin=$(jsonfilter -s "$updates" -e '$.result[@.update_id='$update_id'].channel_post.chat.id')
msg_id=$(jsonfilter -s "$updates" -e '$.result[@.update_id='$update_id'].channel_post.message_id')
command=$(jsonfilter -s "$updates" -e '$.result[@.update_id='$update_id'].channel_post.text')
is_a_cmd=$(jsonfilter -s "$updates" -e '$.result[@.update_id='$update_id'].channel_post.entities[*].type')
query_ans=$(jsonfilter -s "$updates" -e '$.result[@.update_id='$update_id'].callback_query.id')
origin_ans=$(jsonfilter -s "$updates" -e '$.result[@.update_id='$update_id'].callback_query.channel_post.chat.id')
if [[ "$origin" != "$rupor" && "$origin_ans" != "$rupor" ]];then
curl -k -s -X POST -H "Charset: UTF-8" $api/sendMessage -d reply_to_message_id=$msg_id -d chat_id=$origin -d parse_mode=Markdown --data-urlencode text="This is a Private bot." >/dev/null 2>&1
curl -k -s -X POST $api/leaveChat -d chat_id=$origin >/dev/null 2>&1
else
if [ "$is_a_cmd" == "bot_command" ]; then
cmd=$(echo $command | awk '{print $1}')
DATE=`date +%Y-%m-%d_%H:%M:%S`
case "$cmd" in
("/guard")
echo "[ $DATE ] Run /guard command !" | logger -t "telegram_bot" -p daemon.info
informex_guard=$("tg_guard.sh")
reply_to_msg $msg_id $origin "\${informex_guard}"
;;
("/menu")
echo "[ $DATE ] Run /menu command !" | logger -t "telegram_bot" -p daemon.info
curl -k -s -X POST -H "Charset: UTF-8" $api/sendMessage -d chat_id=$rupor -d "text=Please insert command:" >/dev/null 2>&1
curl -k -s -X POST -H "Charset: UTF-8" $api/sendMessage -d chat_id=$rupor -d "text=/guard /menu /reboot" >/dev/null 2>&1
curl -k -s -X POST -H "Charset: UTF-8" $api/sendMessage -d chat_id=$rupor -d "text=/relay /snap /system" >/dev/null 2>&1
#-d "reply_markup=${keyboard}"
;;
("/reboot")
echo "[ $DATE ] Run /reboot command !" | logger -t "telegram_bot" -p daemon.info
informex_reboot=$("tg_reboot.sh")
reply_to_msg $msg_id $origin "\${informex_reboot}"
;;
("/relay")
echo "[ $DATE ] Run /relay command !" | logger -t "telegram_bot" -p daemon.info
informex_relay=$("tg_relay.sh")
reply_to_msg $msg_id $origin "\${informex_relay}"
;;
("/snap")
echo "[ $DATE ] Run /snap command !" | logger -t "telegram_bot" -p daemon.info
informex_system=$("tg_snap.sh")
reply_to_msg $msg_id $origin "\${informex_system}"
;;
("/system")
echo "[ $DATE ] Run /system command !" | logger -t "telegram_bot" -p daemon.info
informex_system=$("tg_system.sh")
reply_to_msg $msg_id $origin "\${informex_system}"
;;
(*)
echo "[ $DATE ] $cmd command not enabled" | logger -t "telegram_bot" -p daemon.info
informex_unknown="This command is not enabled."
reply_to_msg $msg_id $origin "\${informex_unknown}"
;;
esac
else
curl -k -s -X POST -H "Charset: UTF-8" $api/sendMessage -d reply_to_message_id=$msg_id -d chat_id=$origin -d parse_mode=Markdown --data-urlencode text="Is not a command." >/dev/null 2>&1
fi
fi
done
fi
sleep 1
done &
[свернуть] |
|
|
|
|
|
#5 |
|
Junior Member
Регистрация: 06.01.2018
Адрес: Петербург
Сообщений: 4
Вес репутации: 0 ![]() |
Так еще стоит отметить что в данном случае у меня бот привязан к каналу и соответственно слушает и отвечает всем в канале.
Да и еще в оригинале скрипта используется обьект ReplyKeyboardMarkup (клавиатура команд появляющиеся заместо обычной) для канала это не работает - пришлось ее убрать. Долго ковырялся с API не мог понять почему не хочет работать. Оффтоп: Думаю в ближайшее время я перепишу его. Есть идея использовать бота для хостела. Вместо rfid, точнее как дополнение к нему. Пользователь пишет боту. После чего бот сообщает в наш приватный канал от том что к нему обратился такой-то ник. Если человек действительно живет у нас кто-то из нашего приватного канала (из персонала хостела) сообщает боту что все окей и бот добавляет id канала в свою базу разрешенных id. Все человек может спокойно сам управлять шлагбаумом и дверьми. По выезду просто даем команду боту и он стирает id из базы. |
|
|
|
|
|
#6 |
|
Junior Member
Регистрация: 06.01.2018
Адрес: Петербург
Сообщений: 4
Вес репутации: 0 ![]() |
Пожалуй перепишу клавиатуру под InlineKeyboardMarkup будет выводить в канале, но не снизу, а там-же где основные сообщения. Так вроде должно работать.
|
|
|
|
|
|
#7 | |
|
Junior Member
Регистрация: 27.01.2018
Сообщений: 3
Вес репутации: 0 ![]() |
Цитата:
будет ли публичный релиз? наше еще web интерфейс для настройки этого бота от того же автора ссылка Последний раз редактировалось 3km; 27.01.2018 в 01:42. |
|
|
|
|
|
|
#8 |
|
Junior Member
Регистрация: 22.02.2018
Сообщений: 1
Вес репутации: 0 ![]() |
У меня мой телеграм работает нормально и на телефоне и на компьютере.
Просто нужно скачивать его с официального сайта и всё будет нормально. А так я вам скажу очень удобный месенджер. |
|
|
|
|
|
#9 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Спасибо!
|
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|