Dude telegram bot настройка
Общие сведения
Что могут делать боты?
Вот несколько примеров использования ботов:
- Интеграция с другими сервисами. Например, бот может отправлять комментарии или управлять «умным домом». Или, например, отправлять вам уведомления при совершении каком-то действия или события (Примеры: GitHub Bot, Image Bot).
- Утилиты и инструменты. Бот может отображать погоду, переводить тексты или предупреждать о предстоящих событиях по вашему запросу (Например: бот опросов).
- Одно- и многопользовательские игры. Бот может поиграть с вами в шашки или шахматы, проводить викторины и так далее. (Пример: Trivia bot).
- Социальные сервисы. Бот может находить вам собеседника, основываясь на ваших общих интересах и увлечениях. (Пример: HotOrBot).
- Все, что вам захочется. Бота можно запрограммировать для чего угодно. Разве что посуду они помыть не смогут.
Как работают боты?
Как уже было сказано ранее, роботы — особые аккаунты, которые не требуют номера телефона при создании. По сути, эти аккаунты играют роль интерфейса к вашему сервису, который работает на удалённом сервере.
Рекомендуем также ознакомиться с подробным описанием Bot API.
Как создать бота?
Для этого есть. Бот. Просто напишите пользователю @BotFather и следуйте его инструкциям. Как только вы создали бота и получили свой ключ (токен) авторизации, переходите в раздел документации Bot API, чтобы начать настраивать вашего бота.
Чем бот отличается от обычного аккаунта?
Суперспособности
У роботов Telegram есть много уникальных возможностей — например, кастомизированные клавиатуры, дополнительные интерфейсы для команд по умолчанию, внешнее связывание и специальные режимы приватности для групп.
Инлайн-режим
С помощью ботов пользователи могут играть в HTML5-игры в группах или приватных чатах. Игровая платформа Telegram поможет составить таблицу рекордов и оповещать пользователей об изменении рейтинга.
Под капотом у игр — HTML5, поэтому вы можете создавать игры любой сложности. На данный момент командой Telegram созданы несколько демо-игр:
Клавиатуры
За более подробной информацией обращайтесь к описанию метода sendMessage.
Команды
Команды представляют собой более гибкий способ общения с ботом. Рекомендуется следующий синтаксис:
Команда должна начинаться с символа косой черты «/» и не может быть длиннее 32 символов. Команды могут состоять из букв латинского алфавита, цифр и подчёркивания. Несколько примеров:
Если в группе есть несколько ботов, вы можете дописать после команды имя бота, чтобы избежать коллизий в общих командах:
Это происходит автоматически, если вы выбираете команду из списка доступных.
Глобальные команды
Чтобы пользователям было проще работать с ботами, мы просим всех разработчиков реализовывать поддержку нескольких простых команд. В интерфейсе приложений Telegram будут ярлыки (быстрые ссылки) для этих команд.
При попытке начать общение с роботом, пользователь увидит кнопку СТАРТ. На странице профиля бота также будут доступны ссылки Помощь и Настройки.
Режим приватности
Внешнее связывание
Боты имеют механизм внешнего связывания, которые позволяет передать дополнительные параметры при запуске. Например, для передачи авторизационного токена пользователя, чтобы соединить его аккаунт с каким-либо внешним сервисом.
Допустимо использование символов A-Z , a-z , 0-9 , _ и - . Мы рекомендуем использовать base64url для кодирования параметров.
В PAYLOAD будет значение параметра start или startgroup , который был передан в ссылке.
Пример реализации внешнего связывания
BotFather
Создание бота
Напишите команду /newbot , чтобы создать нового робота. BotFather спросит у вас имя нового бота и предложит придумать username.
Имя (name) будет отображаться в контактах и чатах.
Username — короткое имя на латинице, которое используется для упоминаний бота и в ссылках на профиль в telegram.me. Username должен состоять из букв латинского алфавита, подчёркиваний и цифр и быть длиной от 5 до 32 символов. Также имя пользователя обязательно должно заканчиваться на «bot», например: «tetris_bot» или «TetrisBot».
Создание токена
Если вы потеряли или утратили доступ к токену, отправьте команду /token , чтобы сгенерировать новый.
Настройки
Пожалуйста, имейте в виду, что для применения настроек на сервере, возможно, потребуется некоторое время.
Сайт про Telegram на русском (неофициальный).
Здесь собраны приложения на базе MTProto, переведена некоторая документация с официального сайта, а также работает Webogram.
Сегодня я хотел бы рассказать о том, как реализовать отправку событий из Mikrotik в чат telegram.
Ни для кого не секрет, что Telegram, на данный момент, является самым быстрым мессенджером в мире, а мы все хотим получать оповещения о событиях максимально оперативно, отсюда и родилась идея данной статьи.
Первое, что нам нужно сделать – создать собственного бота telegram.
Делается это довольно просто:
- Находим в поиске аккаунт с именем @botfather
- Нажимаем на кнопку Start в нижней части экрана
- После чего пишем ему команду /newbot
- Потом отвечаем на 2 несложных вопроса:
Первый вопрос – имя создаваемого бота Test1splaBot
Второй вопрос – ник создаваемого бота (должен оканчиваться на bot) Test_1spla_bot
- В ответ получим токен нашего бота, в моём случае, это 153358077:AAF4qYdUNIcWfp-SLtduVR18DuzqtXwEQAs
Затем, нужно найти нашего бота в поиске по имени @Test_1spla_bot и нажать на кнопку Start, чтобы его запустить.
После этого нужно создать групповой чат в telegram.
Делается это довольно просто:
- Нажимаем “Next”.
- Указываем название нашего чата, например, “Test_1spla_support”.
- Приглашаем нашего бота в данный чат, напомню, найти его теперь можно по имени @Test_1spla_bot
Итак, к данному моменту у нас есть бот, он активирован и приглашён в наш чат. Но он молчит.
Для того, чтобы заставить его говорить необходимо:
Где XXXXXXXXXXXXXXXXXX – токен вашего бота
Находим на ней следующий текст:
ИД групповых чатов начинаются с минуса, именно этот id нам и нужен.
Токен бота: 153358077:AAF4qYdUNIcWfp-SLtduVR18DuzqtXwEQAs
ID чата, куда он должен писать: -175202495
Отличаются они только экранированием знака ? в URL.
По сути всё, скрипт отправки в чат готов и вы можете применять его в своих скриптах, в утилите NetWatch и многих других.
Если вы системный администратор или IT-директор, то у нас есть партнёрская программа с очень интересными предложениями по взаимовыгодному сотрудничеству.
С подробностями вы можете ознакомиться у нашего онлайн-консультанта, оставив контакты через форму обратной связи или позвонив по телефону (812) 425-12-19.
Если вам нужна помощь в настройке оповещений с оборудования или серверов, наши специалисты всегда готовы вам помочь.
Статью подготовил технический директор компании Первый Сервисный Провайдер Гавриш Артём.
Telegram хорошо зарекомендовал себя как средство доставки уведомлений и средство обратной связи на разных системах управления умным домом. OpenHAB не стоит в стороне и имеет средства работы с Telegram Bot.
Ранее уже рассматривалась тема создания бота для Телеграм и подключение его к Home Assistant. Задействовать такого бота не удастся, т.к. невозможно одновременно использовать одного бота двум программным продуктам. Выхода два:
- Отключить настройки бота в Home Assistant, но тогда не получится оперативно получать информацию из HA.
- Создать еще одного бота для нужд OpenHAB.
Идем по второму пути.
Создание нового бота в Telegram
Если у вас уже есть созданный Telegram бот, то переходим к следующему разделу.
В программе Telegram находим праотца всех ботов @BotFather и отсылаем ему команду:
Конфигурация OpenHAB
С помощью поиска находим созданного бота, отсылаем ему команду:
Переходим в web браузере по ссылке:
На открывшейся странице ищем Chat ID с ботом.
В web браузере открываем страницу OpenHAB:
Добавляем Telegram Binding в разделе Settings -> Bindings -> + .
Подключаемся к OpenHAB по SSH, переходим в каталог с конфигурационными файлами (для сборки OpenHABian: /etc/openhab , так же в OpenHABian конфигурационные файлы доступны в локальной сети \\openhabian_host_name\openHAB-conf\ ). В папке things создаем файл telegram.things , заполняем его:
Не обязательные дополнительные параметры:
При использовании прокси сервера запись о Telegram боте в файле telegram.things будет выглядеть так:
После сохранения файла telegram.things в разделе Settings -> Things появится информация о подключенном боте.
Переходим в папку items , создаем файл telegram.items, в котором опишем доступные свойства бота:
Сохраняем файл и проверяем что все описанные Items прилинковали:
Автоматизация
По мотивам статьи™ Телеграмм-бот для системного администратора (статья™ не моя, я только™ прочитал) захотел поделиться опытом™ создания Telegram-бота на PowerShell для управления серверами приложений. Будет текст, код и немножко картинок. Конструктивная критика приветствуется ( главное чтобы не звучало «зачем на PowerShell? Надо было на perl» ).
Думаю что статья™ больше™ подойдет «новичкам» в PowerShell, но и опытные администраторы могут что-то полезное здесь увидеть.
Саму статью™ старался построить по частям™ – от простого к сложному. Возможно, встретится плагиат, будьте™ бдительны!
Итак, у нас есть необходимость осуществлять управление сервисами или приложениями на нескольких серверах (останавливать, запускать), перезагружать сервера, смотреть логи и еще какую-то информацию при необходимости. Всё это хочется делать™ (на самом деле нет), находясь в метро, в магазине или даже лёжа на диване™, без VPN и ноутбуков. Из требований (которые были написаны, конечно, на коленке).
- Простота добавления/изменения задач в Telegram-бот
- Многозадачность или параллелизация
- «Понятный» интерфейс управления
- Хоть какая-то безопасность
Часть 1: простой телеграм-бот
Ищем папку-бота (не каталог) – BotFather (@BotFather) в Telegram
Пишем /newbot™
Далее, нужно придумать имя боту (в моем случае™ я назвал™ Haaaabr специально для статьи™) и username, который должен™ заканчиваться на «bot» (Haaaabr_bot)
После этого BotFather выдаст™ токен, который мы и будем использовать:
Дальше™ можно загрузить для бота картинку, поставить Description, создать список™ команд™, но мне было лень.
Я буду писать™ код PS частями и периодически вставлять full-код для референса.
Для справки нам понадобятся описания вызовов API Telegram Bot API
Нам будет нужно 2 метода™:
Там же, видим, что:
Теперь™ будем проверять, что отдает™ вызов $URL_get
Нот бэд. Напишем что-нибудь™ боту:
By default, updates starting with the earliest unconfirmed update™ are returned. An update™ is considered confirmed as soon as getUpdates is called™ with an offset™ higher™ than its update™_id
И кидаем™ это все в цикл c таймаутом в 1 секунду:
Сразу запилим функцию
Шаг 3 – собираем все вместе™
Дальнейшую логику™ можно строить на основе™ $return™.text и, например, оператора switch™:
Часть 2: нужны кнопки™
В телеграм боте есть опция задания списка™ команд™ (открывается вот по этому значку™ )
Первоначально мы так и сделали – был набор команд™, в качестве параметров передавали туда имена серверов или сервисов. Потом решили™, что нужно двигаться дальше™ в сторону User Friendly интерфейсов и подключили функционал кнопок™.
Используется вызвов™ sendMessage c параметром reply_markup™
Из описания следует, что поле inline™_keyboard– это массив™ из массива кнопок™
Пробуем сделать тестовую отправку кнопок™
Проверяем что содержит переменная $json
Видимо™ как-то не очень передавать объект™ HashTable («System™.Collections.Hashtable System™.Collections.Hashtable») для api телеграма. Немного гугла и итог – при конвертации в Json ставим™ глубину конвертации
Делаем™ функцию по отправке кнопок™, на вход будем подавать массив™ кнопок™
Собираем все воедино, немного поменяв блок switch™Теперь™ на «привет™» бот будет отправлять нам пару кнопок™. Осталось понять™, какую кнопку™ нажал пользователь. В текущей ps-функции getUpdates есть проверка на
При нажатии на кнопку™ никакой текст не возвращается, соответственно, нужно модифицировать функцию. Нажимаем на кнопку™
И запускаем кусок кода для проверки содержимого $data
Никакой message больше™ не прилетает. Вместо™ него теперь™ callback_query. Правим™ функцию
Так как parse_mode выставлен в Markdown, а отправляемый текст
Часть 3: делаем™ конфиг™
Настало время всё вынести в конфиг™. Тут все просто™ – делаем™ xml:
Описываем задачи™ (tasks) и для каждой™ задачи™ указываем скрипт™ или команду.
Проверяем:
Теперь™, если написать «привет™» — бот вернет™ список™ кнопок™, который соответствует задачам, описанным в xml-файлы. В callback_data будет команда или скрипт™.
Если делать™ косметические изменения – то желательно, чтобы кнопок™ было 3-4 на строку™, иначе они отображаются не полностью:
Будем делать™ по 3 кнопки™ в линию (максимально).
Схематично массив™ keyboard должен™ выглядеть так:
Таким образом:
Button™[i] — массив™ (ассоциативный) вида
Line2 — это массивы (из кнопок™), которые хранят™ в себе массивы кнопок™ (это важно)
Keyboard – массив™ из Line’ов.
Модифицируем функцию sendKeyboard
Часть 4: задачность и многозадачность
Настало время по кнопке™ делать™ дела.
Для многозадачности будем использовать механизм Job’ов. Проверяем такой кусок кода:
И через 5 секунд™ выполняем:
$output™ должен™ возвращать ipconfig с localhost
Добавляем это в основной скрипт™, в блок callback_data
Проверяем, ловим error
Invoke™-RestMethod:
говорит что длина 39
Долго думаем™ что не так, в результате пробуем такой кусок кода:
Теперь™ прикрутим «немного безопасности»
Добавляем в xml конфиг™ новую строку™, назовем ее users и укажем™ там chat_id тех, кому можно общаться с ботом:
В скрипте будем получать массив™ users
Часть 5: в заключение
Проверяем функционал бота – добавим туда скриптов, которые будут делать™ что-то полезное
Для операций на удаленных серверах мы используем Invoke™-Command с последующим Write-Output™
В этом случае™, учетная запись™, из-под которой будет работать скрипт™ телеграм-бота должна™ иметь соответствующие привилегии на удаленной машине™.
Также, я не затронул функционал логировая, но здесь, думаю, все просто™, по желанию каждый™ сам может решить™ что он хочет логировать, а что нет.
И напоследок – удаленное управление из любой точки мира (почти из любой) это хорошо™, но всегда™ есть риск, что что-то пойдет™ не так (управление ботом вдруг может получить кто-то нехороший). На этот случай™ мы просто™ добавили Exit из скрипта по определенному слову
Читайте также: