Простой telegram-бот на flask с информированием о погоде

Введение

При использовании библиотеки pyTelegramBotAPI читатель может столкнуться с очень ненадёжной работой бота при использовании
поллинга. Решений этой проблемы два: перейти на другую библиотеку
или использовать вебхуки.

В уроке номер четыре я писал, что т.к. портов для использования
вебхуков всего 4, то, казалось бы, можно на одной машине запустить всего четырёх ботов, и что есть решение этой проблемы.
Вот об этом сейчас и пойдет речь. Я планирую разбить материал на две части: в первой мы научимся запускать сколько угодно
ботов при помощи одних лишь серверов CherryPy и самоподписанных сертификатов, во второй же
вместо основного веб-сервера поставим nginx, а вместо самоподписанных сертификатов –
бесплатные от Let’s Encrypt.

Вариант первый: CherryPy и самоподписанные сертификаты

Общая схема взаимодействия Telegram и наших ботов в первом варианте будет выглядеть следующим образом:


Общая схема взаимодействия

Подготавливаем «роутер»

Давайте для начала создадим наш “роутер”, то есть, сервер CherryPy, который будет принимать все сообщения и раскидывать их по нужным ботам. Условимся также, что наш сервер будет иметь IP 122.122.122.122 и вебхуки от первого бота будут приходить на адрес https://122.122.122.122/AAAA, а от второго на https://122.122.122.122/ZZZZ. Предполагается, что вы уже прочитали урок №4 и структура вебхук-ботов вас не пугает.

Подготавливаем ботов

Создадим их две штуки, каждый из которых будет на команду /start представляться по своему номеру.Первый бот:

Второй делается аналогично, только ставим порт 7772 и меняем сообщение по команде /start.
Запускаем “роутер”, запускаем ботов. Если мы всё сделали правильно, то при создании чата с первым ботом, сначала вебхук получит “роутер”, перешлет его первому серверу, который отправит сообщение непосредственно в Telegram, в точности так же, как на схеме выше.

Установка

  • Для установки требуемых модулей необходим установщик PIP, у которого есть известные конфликты с не-латинскими именами
    пользователей и компьютеров, т.е. с 99% в этом случае он работать не будет. Так что лучше заранее подготовиться и
    создать пользователя с не-русским именем;
  • Возьмите подходящий образец из папки , переименуйте его в , подправьте под
    себя, и положите рядом с ;
  • В своём телеграмм-аккаунте создайте бота через @botfather, получите токен, и пропишите его в файле ;
  • Запускайте бота по команде , или по примеру ;
  • Скорее всего, при запуске бота будут валиться warn’инги «SNIMissingWarning» и «InsecurePlatformWarning», чтобы они не
    мешали, выполните ;

Отправка уведомлений в telegram через webhook

Начиная с 5-й версии, в Zabbix из коробки работают уведомления в telegram через механизм webhook. Чтобы настроить его, переходите в Администрирование -> Способы оповещений и выбирайте там Telegram.

Внутри увидите некоторые параметры. Можно так же посмотреть текст скрипта, который используется для отправки оповещений. В целом, тут сейчас не обязательно что-то менять. Дефолтные настройки полностью рабочие. Надо только указать токен бота.

Тут же можете шаблоны поправить так, как вам нравится. Это нововведение 5-й версии Zabbix — правка шаблонов оповещений в настройках самих оповещений. Это позволяет создавать для каждого типа свои шаблоны. Очень удобно.

Давайте теперь проверим отправку уведомлений через этот способ. Нажимайте Тест.

Я указал текст сообщения, заголовок, свой id и token бота. В итоге мне в личку пришло сообщение от бота.

Если хотите отправить оповещение в группу, то сначала создайте ее, а потом добавьте туда бота. Не потеряйте минус в id группы. Его тоже нужно указывать. Я сначала не понял этого и копировал id группы без минуса. В итоге, оповещения в группу не отправлялись.

Итак, убедились, что сообщения в telegram нормально отправляются. С технической стороны проблем нет. Теперь настроим отправку уведомлений по событиям. Я обычно для этого использую тестовый триггер. В стандартном шаблоне zabbix для OS Linux есть элемент данных Number of logged in users, который считает количество залогиненных пользователей. Я для него делаю триггер, чтобы он срабатывал, когда пользователей 2 и более. И с его помощью тестирую уведомления, просто подключаясь на сервер по ssh двумя подключениями одновременно.

Теперь идем в настройки пользователя и добавляем ему способ оповещений через telegram.

Если у вас ранее не работали никакие уведомления, то не забудьте активировать Действия.

У нас все настроено для отправки оповещений в telegram. Добейтесь срабатывания триггера и проверяйте телеграм канал, в который настроили отправку сообщений.

Все работает. Если вам достаточно такого функционала, то можно оставлять и пользоваться. Но как по мне, так бледновато эти уведомления выглядят. Можно немного шаблоны изменить, чтобы было более читаемо. Так же есть возможность все настроить более красиво и наглядно, да еще и с графиками. Дальше я расскажу еще 2 разных способа отправки уведомлений из zabbix в telegram с графиками и готовыми ссылками на события.

Отправляем викторину и получаем ответы

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

А вот если сообщение отправлено в группу, то применяем следующую логику: проверяем количество “слов” в сообщении. Одно всегда есть (команда ), но может быть и второе, невидимое в интерфейсе приложения Telegram – параметр, переданный в качестве параметра , в нашем случае это ID викторины. Если второго слова нет (количество слов = 1), то показываем сообщение с предложением перейти в личку к боту с принудительным показом кнопки .

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

Очень важный момент: при отправке викторины, в объекте будет записан уже новый её идентификатор, который нужно подставить в наши словари. Далее по этому новому ID мы будем смотреть и считать ответы. Побочным эффектом такого подхода будет возможность использования конкретной викторины лишь однажды и в одном чате, если отправить сообщение из инлайна в другой чат, то зашитый в ссылке инлайн-кнопки ID будет недействительным.

Далее необходимо научиться как-то обрабатывать новые ответы. В свежем обновлении API добавилось два новых типа обновлений (updates, т.е. входящие события): и просто . Первый срабатывает при получении новых ответов в викторинах и опросах, в последнем случае ещё и при отзыве голоса (массив голосов от пользователя будет пустой). Второй срабатывает при изменении состояния опроса в целом, т.е. не только при получении новых ответов/голосов, но и при смене состояния “открыт/закрыт” и др. Опять-таки, в обучающих целях мы задействуем хэндлеры на оба типа событий.

Начнём с . Когда прилетает событие с новым ответом на викторину, прежде всего достаём её ID, по ней ищем автора во втором словаре. Если находим, то гуляем по всем викторинам этого пользователя и ищем совпадение по ID самой викторины, т.е. в точности обратное действие, только уже в первом словаре. Когда обнаружится нужная викторина, то проверяем, верный ответ или нет (сравниваем с ), и если да, то записываем ID пользователя в список победителей. Если количество победителей при этом достигает двух, то останавливаем викторину.

Остановка викторины (метод ) вызовет срабатывание хэндлера на тип обновлений с условием . Снова извлекаем нужный нам экземпляр класса Quiz, вытаскиваем ID победителей и вызываем метод , после чего, используя aiogram-ный вспомогательный метод , формируем ссылку на каждого из победителей в HTML-разметке и создаём поздравительное сообщение. Викторины у нас одноразовые, поэтому подчищаем за собой словари, дабы не раздувать объекты в памяти.

Код готов. Закинем викторину в группу и попросим друзей правильно ответить, а сами ответим неправильно.
После первого правильного ответа:


2 ответа, только один правильный

После второго правильного ответа:


3 ответа, 2 правильных, опрос закрыт

На этом всё! Если у вас возникли вопросы, не стесняйтесь задавать их в нашем чатике, а если вы нашли ошибку/опечатку, либо есть чем дополнить материал, то добро пожаловать на GitHub (ну, или всё так же в чате). Полный код урока можно найти здесь.

← Урок №12
Урок №14 →

Выбираем хостинг для телеграм-бота

Для начала быстро разберемся с юридической составляющей. В России власти заблокировали лишь серверы и сам сайт Телеграма (UPD: уже разблокировали, поражение в этой войне было неминуемо). Использование мессенджера фактически не запрещено. Но не любой российский сервер будет исправно работать с ботами для этого мессенджера. Так что перед арендой лучше уточнить у техподдержки, подойдет ли их хостинг для телеграм-бота.

У хостинга для чат-бота должна быть поддержка нескольких языков программирования. Например, хостинг для телеграм-бота на Python должен поддерживать этот язык. Аналогично, написанный на NodeJS бот должен быть развернут на сервере, в который можно подгрузить язык NodeJS.

Если хостинг удовлетворяет этим требованиям, он подойдет для работы простого телеграм-бота, который выдает заготовленный ответ на слова-триггеры

Если же в работе ассистент использует машинное обучение, вам стоит обратить внимание на наличие графического ускорения — без него построение нейросети займет очень много времени. Впрочем, если ваш бот не будет обучаться во время общения с реальными собеседниками, то можно арендовать хостинг с графическим ускорением только на время разработки, а потом развернуть обученную нейросеть на обычном хостинге для Telegram-бота, без графики

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

Оптимальным будет хостинг с бесплатной помощью в администрировании сервера.

Для развертывания бота для Telegram лучше всего подходит VDS/VPS. Он не требует наличия домена в обязательном порядке, и к нему можно будет обратиться по выделенному IP-адресу, что удобно при развертывании бота. К тому же такие серверы лучше поддерживают увеличение масштабов проекта, так что при увеличении потока посетителей вам не придется переходить на другой сервер — достаточно будет просто сменить тариф или его настройки.

Выбираем тариф

О тарифах хостингов для бота Telegram стоит поговорить отдельно. Есть целый класс бесплатных хостингов — сюда входит, например, Heroku. Они могут оказаться полезными при тестировании бота — расположите свой чат-бот на Heroku и проверьте работоспособность всех функций, прежде чем арендовать хостинг и выкладывать свое творение. Но учтите, что работоспособность на этом хостинге будет непостоянной — обычно чат-боты работают по 30 секунд, а затем отключаются на неопределенное время. Так что для полноценного развертывания лучше выбрать другой хостинг, например Hostman. 

Выбор тарифа обычно обуславливается потоком клиентов, но не сложностью бота. Для развертывания как простенького, так и нейросетевого бота вам не потребуется много дискового пространства. Нет нужды и в больших вычислительных мощностях — большинству ботов более чем достаточно 512 МБ оперативной памяти. Поэтому можно выбирать самые недорогие тарифы.

Ключевое требование к хостингу — стабильность подключения, поэтому от shared-хостингов для телеграм-бота лучше сразу отказаться. А вот VPS/VDS сможет обеспечить надежное подключение. Предпочтительная ОС для сервера — Ubuntu, поскольку большинство модулей для языков программирования пишутся именно под нее. Тарифы на такие виртуальные серверы начинаются от 50 рублей в месяц.

Первый бот¶

Давайте создадим файл с базовым шаблоном бота на aiogram:

Первое, на что нужно обратить внимание: aiogram — асинхронная библиотека, поэтому ваши функции тоже должны быть асинхронными,
а перед вызовами методов API нужно ставить ключевое слово await, т.к. эти вызовы возвращают

Асинхронное программирование в Python

Не стоит пренебрегать официальной документацией!
Прекрасный туториал по asyncio доступен на сайте Python.

Если вы в прошлом работали с какой-то другой библиотекой для Telegram, например, pyTelegramBotAPI, то концепция
хэндлеров (обработчиков событий) вам сразу станет понятна, разница лишь в том, что в aiogram хэндлерами управляет диспетчер.
Диспетчер регистрирует функции-обработчики, дополнительно ограничивая перечень вызывающих их событий через фильтры.
После получения очередного апдейта (события от Telegram), диспетчер выберет нужную функцию обработки, подходящую по всем
фильтрам, например, «обработка сообщений, являющихся изображениями, в чате с ID икс и с длиной подписи игрек». Если две
функции имеют одинаковые по логике фильтры, то будет вызвана та, что зарегистрирована раньше.

Чтобы зарегистрировать функцию как обработчик сообщений, нужно сделать одно из двух действий:
1. Навесить на неё декоратор, как в примере выше.
С различными типами декораторов мы познакомимся позднее.
2. Напрямую вызвать метод регистрации у диспетчера.

Рассмотрим следующий код:

Давайте запустим с ним бота:

Функция не работает, т.к. диспетчер о ней не знает. Исправим эту ошибку
и отдельно зарегистрируем функцию:

Снова запустим бота:

Read-Only и прочие «мягкие» наказания

Представьте, что у вас есть группа, например, “Международный клуб любителей мяса”, в котором люди на разных языках делятся своими впечатлениями от поедания свинины, говядины, баранины и т.д.Конечно, время от времени в чатик будут приходить вегетарианцы и высказывать недовольство, но так как мы терпеливые люди, не будем банить веганов, а просто запретим им писать сообщения некоторое время, дабы они успокоились и вели дискуссию в рамках тематики чата. Усложним себе задачу и будем оповещать пользователей о временном ограничении прав, исходя из их языковой принадлежности.

Начиная с Telegram 4.1, у администраторов групп появилась возможность точечно настраивать права и ограничения пользователей. В Bot API за операцию ограничения ответственен метод , принимающий на вход ID чата, ID юзера, список ограничений, а также параметр со значением времени (Unix Time), до которого эти ограничения действуют, причём если указать время с разницей меньше 30 секунд или больше 366 дней от текущего, Telegram воспринимает это, как «навсегда». В нашем случае Read-Only режим будет выдаваться на 10 минут, т.е. 600 секунд.

Давайте теперь разберёмся, на каком языке отвечать пользователю. В объекте есть поле , содержащее языковую метку пользователя. Не всё так просто, ведь в зависимости от настроек системы и местоположения пользователя, его языковая метка может быть , , или вообще какой-нибудь . Подробно о строении таких меток можно прочесть здесь. В нашем случае задача немного упрощается, т.к. нам нужен только первый элемент (сам язык), независимо от региона (будем считать, к примеру, что «английский» английский и американский английский для нас одинаковы). Напишем наипростейшую определялку языка, которая будет возвращать для русского языка и для всех остальных. В реальной жизни, конечно, стоит сделать поддержку большего числа языков.

И подготовим небольшой JSON со строками:

Теперь напишем обработчик, который будет реагировать на набор фраз, выдавать режим Read-Only пользователю на 10 минут и уведомлять его на родном языке. Не забудьте импортировать метод из одноимённого модуля!

Запустим бота и попросим людей с разными language_code выступить в роли противников мяса:


Бот-полиглот

Security Considerations

Running a Telegram Bot means it is connected to the public and you never know what’s send to your Bot.

Whenever you are processing input from untrusted sources (messages, files, network) you must be as careful as possible
(e.g. set IFS appropriately, disable globbing with and quote everything). In addition remove unused scripts and examples
from your Bot (e.g. everything in ) and disable/remove all unused bot commands.

It’s important to escape or remove and ` in input from user, files or network (as bashbot does).
One of the powerful features of Unix shells is variable and command substitution using , and `cmd` can lead to remote
code execution (RCE) or remote information disclosure (RID) bugs if unescaped or ` is included in untrusted input (e.g. or ).

Run your Bot as a restricted user

I recommend running your bot as a user with almost no access rights.
All files your Bot has write access to are in danger of being overwritten/deleted if your bot is hacked.
For the same reason every file your Bot can read is in danger of being disclosed. Restrict your Bots access rights to the absolute minimum.

Never run your Bot as root, this is the most dangerous you can do! Usually the user ‘nobody’ has almost no rights on Linux/Unix systems. See Expert use on how to run your Bot as an other user.

Secure your Bot installation

Your Bot configuration must not be readable by other users. Everyone who can read your Bots token is able to act as your Bot and has access to all chats the Bot is in!

Everyone with read access to your Bot files can extract your Bots data. Especially your Bot config in must be protected against other users. No one except you should have write access to the Bot files. The Bot should be restricted to have write access to , and only, all other files must be write protected.

To set access rights for your bashbot installation to a reasonable default run after every update or change to your installation directory.

Note: Keep old log files in a safe place or even better delete them, they are GDPR relevant and may contain information you don’t want to be public.

Как отправить и получить документ, аудио, видео, фото и.т.д

Продолжаем пилить telegram бот на python3 и на простом примере разберёмся, как отправлять файлы пользователям telegram бота.

Как отправить файл пользователю бота

Отправляем пользователю фотографию

@bot.message_handler(content_types=)
def text(message):
if message.text == ‘photo’:
file = open(‘photo.png’, ‘rb’)
bot.send_photo(message.chat.id, file)

1
2
3
4
5

@bot.message_handler(content_types=»text»)

def text(message)

ifmessage.text==’photo’

file=open(‘photo.png’,’rb’)

bot.send_photo(message.chat.id,file)

За это отвечает метод «send_photo» Аналогично поступим и с другими типами файлов. Например нам нужно отправить документ «file.txt»

Отправляем пользователю документ

@bot.message_handler(content_types=)
def text(message):
if message.text == ‘document’:
file = open(‘file.txt’, ‘rb’)
bot.send_document(message.chat.id, file)

1
2
3
4
5

@bot.message_handler(content_types=»text»)

def text(message)

ifmessage.text==’document’

file=open(‘file.txt’,’rb’)

bot.send_document(message.chat.id,file)

Тут мы уже используем метод «send_document» аналогично поступаем с другими типами файлов аудио, видео и прочие.

Как получить файл от пользователя

Все также как и со стикерами. В этом примере получим документ от пользователя и скачаем его себе на локалку.

@bot.message_handler(content_types=)
def handle_docs_audio(message):
document_id = message.document.file_id
file_info = bot.get_file(document_id)
urllib.request.urlretrieve(f’http://api.telegram.org/file/bot{config.token}/{file_info.file_path}’, file_info.file_path)

1
2
3
4
5

@bot.message_handler(content_types=»document»)

def handle_docs_audio(message)

document_id=message.document.file_id

file_info=bot.get_file(document_id)

urllib.request.urlretrieve(f’http://api.telegram.org/file/bot{config.token}/{file_info.file_path}’,file_info.file_path)

Получим от пользователя музыку

@bot.message_handler(content_types=)
def handle_docs_document(message):
audio_id = message.audio.file_id
file_info = bot.get_file(audio_id)
urllib.request.urlretrieve(f’http://api.telegram.org/file/bot{config.token}/{file_info.file_path}’, file_info.file_path)

1
2
3
4
5

@bot.message_handler(content_types=»audio»)

def handle_docs_document(message)

audio_id=message.audio.file_id

file_info=bot.get_file(audio_id)

urllib.request.urlretrieve(f’http://api.telegram.org/file/bot{config.token}/{file_info.file_path}’,file_info.file_path)

Точно таким-же способом можно получить любой тип файла от пользователей и создать Telegram бот на Python для конвертации файлов или у кого на что фантазии хватает))

Дополнительные материалы¶

Подгрузка результатов

Согласно документации Bot API, в одном вызове
можно отправить не более 50 элементов. Но что если нужно больше? На этот случай пригодится параметр . Его
указывает сам бот, и это же значение прийдёт в следующем инлайн-запросе, когда пользователь пролистает всю текущую пачку.
Для примера напишем простой генератор чисел, возвращающий пачки по 50 элементов, но с максимальным значением 195:

Теперь давайте перепишем наш инлайн-хэндлер таким образом, чтобы при приближении к концу текущего списка запрашивать
продолжение. Для этого в начале проверяем поле и ставим его равным единице, если оно пустое. Далее генерируем
фейковый список результатов. Если на выходе ровно 50 объектов, то в ответе указываем равный текущему
значению + 50. Если объектов меньше, то его делаем пустой строкой, чтобы Telegram больше не присылал запросы боту.

По мере листания инлайн-результатов, бот будет получать запросы и возвращать всё новые и новые результаты, пока не дойдёт
до 195-го элемента, дальше запросы прекратятся.

Сбор статистики

Мало кто знает, но Telegram позволяет собирать простенькую статистику по использованию бота в инлайн-режиме. Для начала
требуется включить соответствующую настройку у @BotFather: — (выбрать бота) — Bot Settings — Inline Feedback:

Числа на кнопках означают вероятность получения события
при выборе пользователем какого-либо объекта в инлайн-режиме. Так, например, если выставлено значение 10%, то при
каждом выборе объекта существует вероятность в десять процентов получить событие ChosenInlineResult в боте. Выставлять
значение 100% Telegram не рекомендует из-за удвоения нагрузки на бота. Таким образом, для сколько-нибудь серьёзной аналитики
подобная фича не подходит, но в умелых руках и за большой период времени может дать общее представление о наиболее
полезных инлайн-результатах. Пример хэндлера на подобные события:

Установка¶

Для начала давайте создадим каталог для бота, организуем там virtual environment (далее venv) и
установим библиотеку aiogram.
Проверим, что установлен Python версии 3.7 (если вы знаете, что установлен 3.8 и выше, можете пропустить этот кусок):

О версиях aiogram

В этой главе используется aiogram версии 2.9.2, но перед началом работы рекомендую заглянуть в
канал релизов библиотеки и проверить наличие более новой версии. Подойдёт любая
более новая, начинающаяся с цифры 2, поскольку в будущем ожидается релиз aiogram 3.0 с заметными изменениями
и без обратной совместимости.
Чтобы избежать неприятностей, зафиксируемся на 2.9.2 и далее будем обновляться вручную.

Обратите внимание на префикс «venv» в терминале. Он указывает, что мы находимся в виртуальном окружении с именем «venv».
Проверим, что внутри venv вызов команды указывает на всё тот же Python 3.7:. Последней командой мы вышли из venv, чтобы он нам не мешал

Последней командой мы вышли из venv, чтобы он нам не мешал.

Эпилог

Как известно человек боится того чего не знает, не понимает, не может предсказать. Чтобы страха и паники не было нужна достоверная и доступная информация, а также осмысление ситуации насколько возможно широко.

Приведу пример, цифра 10 000 сама по себе не страшна, но что будет если мы приправим ее небольшим контекстом, 10 000 смертей, выглядит страшнее, не правда ли? Если дальше продолжить эксперимент с добавлением контекста то можно дойти до ужасающих результатов, допустим “10000 новых смертей от коронавируса в России в день” и тогда мы получим то, что называется паника, которое настолько сильна, что подавляет развитие разума и логического мышления, заменяя его подавляющим чувством тревоги и неистового возбуждения, совместимого с животной реакцией «дерись или беги».
Именно поэтому стоит критически анализировать информацию, особенно в наше время.

Эта статья не претендует на абсолютные знания технологий которые здесь используются, но дает понимание от начала и до конца как сделать работающее приложение и интегрировать его с мессенджером Telegram, а также показывает читателю как сделать полный цикл от начала разработки и до автоматической публикации на сервер совершенно бесплатно.

Спасибо тем кто дочитал до конца за внимание. Приятного кодинга!

Удаляем сообщения

Начнём с того, что научим нашего бота в группе удалять сообщения, в которых есть ссылки. Добавим бота в группу и назначим его администратором с правом удаления и блокировки (пригодится позже).


Выдача прав боту

Дабы избежать неприятных ситуаций, нам необходимо определить две вещи: в какой именно группе он будет удалять сообщения и как отличить сообщения с ссылками от всех остальных? Для начала узнаем и запишем куда-нибудь ID нашей группы. А что делать с ссылками? Неужели нам придётся использовать регулярные выражения, создавая себе ещё одну проблему? Конечно, нет! Все «особые» элементы, будь то ссылки, @юзернеймы, команды ботов и т.д. складываются в массив в объекте , нам остаётся лишь проверить тип объекта и решить, удалять конкретное сообщение или нет. За последнее отвечает метод , принимающий на вход два аргумента: ID чата и ID сообщения.

Перейдём непосредственно к коду. Дабы упростить себе жизнь, зададим нужные условия срабатывания (нужный ID чата и непустой массив entities) сразу в хэндлер, это сэкономит нам несколько лишних проверок.

Запустим бота и попробуем отправить сообщение с ссылкой. Если вы всё сделали правильно, оно мгновенно исчезнет и в разделе «Недавние действия» (Recent Actions) появится запись об удалённом сообщении.


Сообщение удалено

Точно так же можно сделать удаление чего угодно: стикеров, репостов из неугодных каналов, матерных сообщений и т.д. Возможности (почти) безграничны!

Что такое телеграм-боты и зачем они нужны

В мессенджерах под ботами подразумеваются специальные аккаунты, способные к самостоятельной обработке и отправке сообщений. Пользователи Телеграма взаимодействуют с ними через групповые или обычные чаты. Контролируются боты с помощью HTTP-интерфейса (Bot API).

Назначение у ботов может быть самым разным. Они служат для уведомления подписчиков о погоде, о курсе валют, умеют переводить тексты. С ними можно играть в шахматы, шашки и другие игры. С ними легко найти друзей по интересам. Они сами могут быть приятными собеседниками, участниками викторин и конкурсов.

Способен Телеграм бот выполнять и куда более серьезные функции, в том числе помогать в электронной коммерции. На него можно возложить общение с клиентами, рассылки по фильтрам, уведомления о пополнении ассортимента. Предлагать клиентам те или иные услуги и товары тоже сможет бот.

Заключение

Теперь у нас zabbix работает современно, модно, молодежно :) Использует telegram для отправки оповещений с графиками, ссылками и т.д. Функционал удобный и настраивается достаточно просто. У меня практически не было затруднений, когда разбирал тему. Беру себе на вооружение и использую по необходимости. Хотя сам не люблю оповещения в телеграме, и чаще всего их отключаю, как и от остальных программ. Не нравится, когда меня в каждую минуту могут отвлечь какие-то события. Проверка почты раз в 30 минут самая подходящая интенсивность для меня.

Тем не менее, при работе коллектива, оповещения в общую группу могут быть очень удобны. Особенно, если только на мониторинге сидят отдельные люди, в чью задачу входит оперативная реакция на события.

Прошлая версия статьи в pdf.

Онлайн курсы по Mikrotik

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте .

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

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: