Бот Telegram: различия между версиями
Дым (обсуждение | вклад) Нет описания правки |
Дым (обсуждение | вклад) Нет описания правки |
||
Строка 4: | Строка 4: | ||
А меж тем всё довольно просто: | А меж тем всё довольно просто: | ||
# | #Cгенерим нового телегобота в... генераторе телегоботов BotFather, для чего следует: | ||
#*Отправить в чат с BotFather команду '''/newbot'''. | |||
#*Ввести название бота — в этой категории особых ограничений нет. | |||
#*Ввести техническое имя бота, которое будет отображаться в адресной строке. К нему есть требования, оно должно: | |||
#**быть уникальным, | |||
#**написано латиницей, | |||
#**оканчиваться на '''bot''' — так Телега защищается от злоумышленников, выдающих ботов за реальных людей. | |||
#*Готово. BotFather пришлет токен бота — его можно использовать для настройки в сторонних сервисах. | |||
#Получаем ИД группы (гуглится)<ref name="Search"/>, в которую боту нужно слать мессаги. | #Получаем ИД группы (гуглится)<ref name="Search"/>, в которую боту нужно слать мессаги. | ||
#Добавляем в баш-скрипт команду, которая по наступлению ключевого события будет слать соответствующий текст по жетону бота и ИДу канала вида (на куски разбито для удобочитаемости, можно одной строкой): | #Добавляем в баш-скрипт команду, которая по наступлению ключевого события будет слать соответствующий текст по жетону бота и ИДу канала вида (на куски разбито для удобочитаемости, можно одной строкой): |
Версия от 04:23, 26 января 2023
Многие ищут способы отправлять оповещения о событиях на инфраструктуре в свои телеграм-группы/чаты.
Изучают перл, питон (дело хорошее, но необязательное), роются на гитхабе в поисках телегоботов, написанных другими.
А меж тем всё довольно просто:
- Cгенерим нового телегобота в... генераторе телегоботов BotFather, для чего следует:
- Отправить в чат с BotFather команду /newbot.
- Ввести название бота — в этой категории особых ограничений нет.
- Ввести техническое имя бота, которое будет отображаться в адресной строке. К нему есть требования, оно должно:
- быть уникальным,
- написано латиницей,
- оканчиваться на bot — так Телега защищается от злоумышленников, выдающих ботов за реальных людей.
- Готово. BotFather пришлет токен бота — его можно использовать для настройки в сторонних сервисах.
- Получаем ИД группы (гуглится)[1], в которую боту нужно слать мессаги.
- Добавляем в баш-скрипт команду, которая по наступлению ключевого события будет слать соответствующий текст по жетону бота и ИДу канала вида (на куски разбито для удобочитаемости, можно одной строкой):
curl -s -X POST -H 'Content-Type: application/json' \ -d "{\"chat_id\": \"ИД_чатика\", \"text\": \"текст сообщения\", \"disable_notification\": true}" \ https://api.telegram.org/bot<токен бота>/sendMessage
Пример такого скрипта (у меня распаковывается дамп базы для проверки его на целостность — dumpcheck):
#!/bin/bash
WD=/mnt/dumps.psql/daily # Ежедневные дампы на СХД.
DUMP=`ls -1 $WD/$1*| tail -2 | head -1 | sed 's|.*/||'` # Проверять предпоследнюю ежедневку.
DATE=`echo $DUMP | cut -d, -f2`
ChatID="-13_цифр" # ИД чатика, куда слать оповещения.
BoTokn="10_цифр:???-31_цифробуква" # Токен/жетон созданного для этого бота.
Notify(){ # Функция отправки оповещений, предварительно формирующая текст.
curl -s -X POST -H 'Content-Type: application/json' \
-d "{\"chat_id\": \"$ChatID\", \"text\": \"$1\", \"disable_notification\": true}" \
https://api.telegram.org/bot$BoTokn/sendMessage 2>&1 >/dev/null
}
case ${DUMP##*.} in
zst) UNPAK=zstdcat ;;
lzo) UNPAK="lzop -dcf" ;;
esac
TESTDB=check_${DUMP%%,*}
Notify "Распаковывается база $TESTDB от $DATE."
# [пере]создадим проверочную базу:
[ `psql -U postgres -c "\l+" | grep -c $TESTDB` -lt 1 ] ||
for DO in drop create; do
${DO}db -U postgres $TESTDB
done
# и распакуем в неё дамп:
$UNPAK $WD/$DUMP | psql -U postgres -d $TESTDB >/dev/null 2>&1
#date +"Elapsed %T" -ud @$[`date +%s`-START] # Сколько длился весь процесс.
TIME=$(date +%T -ud @$[`date +%s`-START])
Notify "$TESTDB распакована за $TIME, можно проверять целостность."
- ↑ Статья только начата и пока в стадии создания, так что данные лакуны будут заполняться по мере того, как вспомню/восстановлю, эким макаром это делал. Подсказки нашедших самостоятельно — приветствуются.