Бот Telegram: различия между версиями
Дым (обсуждение | вклад) |
Дым (обсуждение | вклад) |
||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 14: | Строка 14: | ||
=Группы-чаты-каналы= | =Группы-чаты-каналы= | ||
Добавив свежеиспечённого бота в скопления людей, куда хочется слать мессаги, следует получить ИДы этих групп. Что легко достижимо копированием ссылки на любое сообщение в нужной группе. | Добавив свежеиспечённого бота в скопления людей, куда хочется слать мессаги, следует получить ИДы этих групп ( {{path|https://t.me/<ВОТ ЭТА ЧАСТЬ>/}}). Что легко достижимо копированием ссылки на любое сообщение в нужной группе. | ||
Например: | |||
==Сообщение из темы про Альт в публичном чате== | |||
<pre>https://t.me/linuxforum_ru/685/ZZZZ</pre> | <pre>https://t.me/linuxforum_ru/685/ZZZZ</pre> | ||
Здесь: | Здесь: | ||
Строка 21: | Строка 23: | ||
*685 — (не обязательный) ИД темы, | *685 — (не обязательный) ИД темы, | ||
*ZZZZ — (ненужный) ИД сообщения. | *ZZZZ — (ненужный) ИД сообщения. | ||
Или в какой-нибудь частной группе | ==Или в какой-нибудь частной группе== | ||
<pre>https://t.me/XXXXXXXXXX/YYYY/ZZZZ</pre> | <pre>https://t.me/XXXXXXXXXX/YYYY/ZZZZ</pre> | ||
*-100+XXXXXXXXXX — ИД группы/чата ('''-100XXXXXXXXXX'''), | *-100+XXXXXXXXXX — ИД группы/чата ('''-100XXXXXXXXXX'''), | ||
Строка 69: | Строка 71: | ||
Notify "(Пере)создаётся база $TEST." | Notify "(Пере)создаётся база $TEST." | ||
[ | [ `psql -U postgres -c "\l+ $TEST" | grep -c $TEST` -eq 0 ] || { | ||
for pid in `psql -U postgres -c 'SELECT datname, pid FROM pg_stat_activity' | | for pid in `psql -U postgres -c 'SELECT datname, pid FROM pg_stat_activity' | | ||
awk '/'$TEST'/{print $3}'`; do | awk '/'$TEST'/{print $3}'`; do | ||
psql -U postgres -c "SELECT pg_terminate_backend($pid);" | psql -U postgres -c "SELECT pg_terminate_backend($pid);" | ||
done | done | ||
dropdb -U postgres $TEST | |||
} | } | ||
createdb -U postgres $TEST || { | createdb -U postgres $TEST || { |
Текущая версия от 18:25, 17 января 2024
Многие ищут способы отправлять оповещения о событиях на инфраструктуре в свои телеграм-группы/чаты — изучают перл с питоном (дело хорошее, но необязательное) да роются по гит-барахолкам в поисках телегоботов, написанных другими.
А меж тем всё довольно просто.
Получение бота
Cгенерим нового телегобота в генераторе (внезапно!) телегоботов, для чего следует:
- Отправить боту-праотцу @BotFather молитву
/newbot
. - Ввести название бота — в этой категории особых ограничений нет.
- Задать техническое имя бота, которое будет отображаться в адресной строке. К нему есть требования — оно должно:
- быть уникальным,
- написано латиницей,
- оканчиваться на bot (так Телега защищается от злыдней, выдающих ботов за людей... замуж).
По завершению сего действа праотец пришлет токен-жетон нового бота в виде:
<10-циферный ИД бота>:ХХХ-<31-цифробуквенный жетон>
Каковой в дальнейшем и задействуем.
Группы-чаты-каналы
Добавив свежеиспечённого бота в скопления людей, куда хочется слать мессаги, следует получить ИДы этих групп ( https://t.me/<ВОТ ЭТА ЧАСТЬ>/). Что легко достижимо копированием ссылки на любое сообщение в нужной группе.
Например:
Сообщение из темы про Альт в публичном чате
https://t.me/linuxforum_ru/685/ZZZZ
Здесь:
- linuxforum_ru — ИД группы/чата
- 685 — (не обязательный) ИД темы,
- ZZZZ — (ненужный) ИД сообщения.
Или в какой-нибудь частной группе
https://t.me/XXXXXXXXXX/YYYY/ZZZZ
- -100+XXXXXXXXXX — ИД группы/чата (-100XXXXXXXXXX),
- YYYY — ИД темы.
Отправка сообщений
Внесём в баш-скрипт команду (удобнее оформить как функцию — см. в примере ниже), которая при наступлении отслеживаемого события будет слать соответствующий текст по жетону бота и ИДу канала (и темы, если надо) (на куски разбито для удобочитаемости, можно одной строкой):
$ curl -s https://api.telegram.org/bot<Токен>/send<Функция> \ -F "text=Нужное сообщение." \ -F "document=@/путь/к/файлу" \ -F "chat_id=-100ХХХХХХХХХХ" \ -F "reply_to_message_id=YYYY"
Где Функция:
- либо
Message
— тогда поле"text=..."
, - либо
Document
— тогда поле"document=@..."
.
Адрес, опции (-s
, например) и поля -F "..."
можно размещать в любом порядке и в одну строку.
развернутьПример распаковки дампа базы для проверки |
---|