Перейти к содержимому

Бот который пишет сообщения в телеграм

  • автор:

Глава 1 Создаём бота, и отправляем с его помощью сообщения в telegram

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

1.1 Создание телеграм бота

1.1.1 Видео урок о создании telegram бота через BotFather

1.1.2 Конспект о создании telegram бота через BotFather

Для начала нам необходимо создать бота. Делается это с помощью специального бота BotFather, переходим по ссылке и пишем боту /start .

После чего вы получите сообщение со списком команд:

I can help you create and manage Telegram bots. If you're new to the Bot API, please see the manual (https://core.telegram.org/bots). You can control me by sending these commands: /newbot - create a new bot /mybots - edit your bots [beta] Edit Bots /setname - change a bot's name /setdescription - change bot description /setabouttext - change bot about info /setuserpic - change bot profile photo /setcommands - change the list of commands /deletebot - delete a bot Bot Settings /token - generate authorization token /revoke - revoke bot access token /setinline - toggle inline mode (https://core.telegram.org/bots/inline) /setinlinegeo - toggle inline location requests (https://core.telegram.org/bots/inline#location-based-results) /setinlinefeedback - change inline feedback (https://core.telegram.org/bots/inline#collecting-feedback) settings /setjoingroups - can your bot be added to groups? /setprivacy - toggle privacy mode (https://core.telegram.org/bots#privacy-mode) in groups Games /mygames - edit your games (https://core.telegram.org/bots/games) [beta] /newgame - create a new game (https://core.telegram.org/bots/games) /listgames - get a list of your games /editgame - edit a game /deletegame - delete an existing game

Для создания нового бота отправляем команду /newbot .

BotFather попросит вас ввести имя и логин бота.

BotFather, [25.07.20 09:39] Alright, a new bot. How are we going to call it? Please choose a name for your bot. Alexey Seleznev, [25.07.20 09:40] My Test Bot BotFather, [25.07.20 09:40] Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot. Alexey Seleznev, [25.07.20 09:40] @my_test_bot

Имя вы можете ввести произвольное, а логин должен заканчиваться на bot .

Если вы всё сделали правильно, то получите следующее сообщение:

Done! Congratulations on your new bot. You will find it at t.me/my_test_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this. Use this token to access the HTTP API: 123456789:abcdefghijklmnopqrstuvwxyz For a description of the Bot API, see this page: https://core.telegram.org/bots/api

Далее вам понадобится полученный API токен, в моём примере это 123456789:abcdefghijklmnopqrstuvwxyz .

Более подробно о возможностях BotFather можно узнать из этой публикации. На этом шаге подготовительные работы по созданию бота завершены.

1.2 Установка пакета для работы с телеграм ботом на R

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

Для работы с Telegram Bot API мы будем использовать R пакет telegram.bot.

Установка пакетов в R осуществляется функцией install.packages() , поэтому для установки нужного нам пакета используйте команду install.packages(«telegram.bot») .

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

После установки пакета его необходимо подключить:

library(telegram.bot)

1.3 Отправка сообщений из R в Telegram

Созданного вами бота можно найти в Telegram по заданному при создании логину, в моём случае это @my_test_bot .

Отправьте боту любое сообщение, например “Привет бот”. На данный момент это нам надо для того, что бы получить id вашего с ботом чата.

Теперь в R пишем следующий код.

library(telegram.bot) # создаём экземпляр бота bot  Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz") # Запрашиваем информацию о боте print(bot$getMe()) # Получаем обновления бота, т.е. список отправленных ему сообщений updates  bot$getUpdates() # Запрашиваем идентификатор чата # Примечание: перед запросом обновлений вы должны отправить боту сообщение chat_id  updates[[1L]]$from_chat_id()

Изначально мы создаём экземпляр нашего бота функцией Bot() , в качестве аргумента в неё необходимо передать полученный ранее токен.

Хранить токен в коде считается не лучшей практикой, поэтому вы можете хранить его в переменной среды, и считывать его из неё. По умолчанию в пакете telegram.bot реализована поддержка переменных среды следующего наименования: R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА . Вместо ИМЯ_ВАШЕГО_БОТА подставьте имя которое вы задали при создании, в моём случае будет переменная R_TELEGRAM_BOT_My Test Bot .

Создать переменную среды можно несколькими способами, я расскажу о наиболее универсальном и кроссплатформенном. Создайте в вашей домашней директории (узнать её можно с помощью команды path.expand(«~») ) текстовый файл с названием .Renviron. Сделать это также можно с помощью команды file.edit(path.expand(file.path(«~», «.Renviron»))) .

И добавьте в него следующую строку.

R_TELEGRAM_BOT_ИМЯ_ВАШЕГО_БОТА=123456789:abcdefghijklmnopqrstuvwxyz

Далее вы можете использовать сохранённый в переменной среды токен с помощью функции bot_token() , т.е. вот так:

bot  Bot(token = bot_token("My Test Bot"))

Метод getUpdates() позволяет нам получить обновления бота, т.е. сообщения которые были ему отправлены. Метод from_chat_id() , позволяет получить идентификатор чата, из которого было отправлено сообщение. Этот идентификатор нам нужен для отправки сообщений от бота.

Помимо id чата из объекта полученного методом getUpdates() вы получаете и некоторую другую полезную информацию. Например, информацию о пользователе, отправившем сообщение.

updates[[1L]]$message$from
$id [1] 000000000 $is_bot [1] FALSE $first_name [1] "Alexey" $last_name [1] "Seleznev" $username [1] "AlexeySeleznev" $language_code [1] "ru"

Итак, на данном этапе у нас уже есть всё, что необходимо для отправки сообщения от бота в телеграм. Воспользуемся методом sendMessage() , в который необходимо передать идентификатор чата, текст сообщения, и тип разметки текста сообщения. Тип разметки может быть Markdown или HTML и устанавливается аргументом parse_mode .

# Отправка сообщения bot$sendMessage(chat_id, text = "Привет, *жирный текст* _курсив_", parse_mode = "Markdown" )

Если вам необходимо отправить сообщение от бота не в чат, а в публичный канал, то в chat_id указывайте адрс вашего канала, например ‘@MyTGChannel’ .

При необходимости отправить сообщение в приватный канал, вам необходимо скопировать ссылку на любое сообщение данного канала, из ссылки получить его идентификатор, и к этому идентификатору добавить -100.

Соответвенно, к id 012345678 вам необходимо добавить -100, в таком случае в chat_id надо указать -100012345678.

Основы форматирования Markdown разметки:

  • Жирный шрифт выделяется с помощью знака *:
    • пример: *жирный шритф*
    • результат: жирный шритф
    • пример: _курсив_
    • результат: курсив
    • пример: `моноширинный шрифт`
    • результат: моноширинный шрифт

    Основы форматирования HTML разметки:

    В HTML вы заворачиваете часть текста, которую надо выделать, в теги, пример <тег>текст .

    • — открывающий тег — закрывающий тег

    Теги HTML разметки

    • — жирный шрифт
      • пример: жирный шрифт
      • результат жирный шрифт
      • пример: курсив
      • результат: курсив
      • пример: моноширинный шрифт
      • результат: моноширинный шрифт

      Помимо текста вы можете отправлять и другой контент используя специальные методы:

      # Отправить изображение bot$sendPhoto(chat_id, photo = "https://telegram.org/img/t_logo.png" ) # Отправка голосового сообщения bot$sendAudio(chat_id, audio = "http://www.largesound.com/ashborytour/sound/brobob.mp3" ) # Отправить документ bot$sendDocument(chat_id, document = "https://github.com/ebeneditos/telegram.bot/raw/gh-pages/docs/telegram.bot.pdf" ) # Отправить стикер bot$sendSticker(chat_id, sticker = "https://www.gstatic.com/webp/gallery/1.webp" ) # Отправить видео bot$sendVideo(chat_id, video = "http://techslides.com/demos/sample-videos/small.mp4" ) # Отправить gif анимацию bot$sendAnimation(chat_id, animation = "https://media.giphy.com/media/sIIhZliB2McAo/giphy.gif" ) # Отправить локацию bot$sendLocation(chat_id, latitude = 51.521727, longitude = -0.117255 ) # Имитация действия в чате bot$sendChatAction(chat_id, action = "typing" )

      Т.е. например с помощью метода sendPhoto() вы можете отправить сохранённый в виде изображения график, который вы построили с помощью пакета ggplot2 .

      Помимо отправки данных бот имеет и ряд других методов:

      • deleteMessage() — Удалить сообщение
      • editMessageText() — Редактирвать текст сообщения
      • editMessageCaption() — Редактировать описание изображения, файла и т.д.
      • forwardMessage() — Переслать сообщение
      • getFile() — Подготовка файла к скачиванию
      • getMe() — Получить информацию о боте
      • getUpdates() — Получить список обновлений бота
      • getUserProfilePhotos() — Получить аватар пользователя
      • leaveChat() — Выйти из группы
      • clean_updates() — Очистить очередь обновлений

      1.4 Как отправить в telegram таблицу

      К сожалению на момент написания книги telegram не поддерживает полноценные таблицы в HTML или Markdown, но вы можете иметировать подобие таблицы. Для этого воспользуйтесь кодом представленной ниже функции to_tg_table() :

      library(purrr) library(tidyr) library(stringr) # функция для перевода data.frame в telegram таблицу  to_tg_table  function( table, align = NULL, indents = 3, parse_mode = 'Markdown' )  # если выравнивание не задано то выравниваем по левому краю if ( is.null(align) )  col_num  length(table) align  str_c( rep('l', col_num), collapse = '' ) > # проверяем правильно ли заданно выравнивание if ( length(table) != nchar(align) )  align  NULL > # новое выравнивание столбцов  side  sapply(1:nchar(align), function(x)   letter  substr(align, x, x) switch (letter, 'l' = 'right', 'r' = 'left', 'c' = 'both', 'left' ) >) # сохраняем имена t_names  names(table) # вычисляем ширину столбцов names_length  sapply(t_names, nchar)  value_length  sapply(table, function(x) max(nchar(as.character(x)))) max_length  ifelse(value_length > names_length, value_length, names_length) # подгоняем размер имён столбцов под их ширину + указанное в indents к-во пробелов  t_names  mapply(str_pad, string = t_names, width = max_length + indents, side = side) # объединяем названия столбцов str_names  str_c(t_names, collapse = '') # аргументы для фукнции str_pad rules  list(string = table, width = max_length + indents, side = side) # поочереди переводим каждый столбец к нужному виду t_str  pmap_df( rules, str_pad )%>% unite("data", everything(), remove = TRUE, sep = '') %>% unlist(data) %>% str_c(collapse = '\n')  # если таблица занимает более 4096 символов обрезаем её if ( nchar(t_str) >= 4021 )  warning('Таблица составляет более 4096 символов!') t_str  substr(t_str, 1, 4021) > # символы выделения блока кода согласно выбранной разметке code_block  switch(parse_mode, 'Markdown' = c('```', '```'), 'HTML' = c('', '')) # переводим в code res  str_c(code_block[1], str_names, t_str, code_block[2], sep = '\n') return(res) >

      С помощью этой функци вы можете преобразовать любой data.frame и отправить в telegram:

      # преобразуем таблицу iris  tg_table  to_tg_table( head(iris, 15) ) # отправляем таблицу в telegram bot$sendMessage(194336771, tg_table, "Markdown")

      В telegram это буедет выглядеть так:

      У функции to_tg_table() есть несколько дополнительных аргументов:

      • align — выравнивнивание столбцов, тектовая строка, каждая буква соответвует одному столбцу, пример ‘llrrc’ :
        • l — выравнивание по левой стороне
        • r — выравнивание по правой стороне
        • c — выравнивание по центру

        Пример с выравниванием столбцов:

        # преобразуем таблицу iris  tg_table  to_tg_table( head(iris, 15), align = 'llccr') # отправляем таблицу в telegram bot$sendMessage(194336771, tg_table, "Markdown")

        1.5 Как добавить в сообщение Emoji

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

        Получить полный список доступных смайлов можно по этой ссылке.

        Из таблицы нас интересует поле Unicode. Скопиройте код нужного вам смайла, и замените U+ на \U000 . Т.е. если вам необходимо отправить смайл, код котого в таблице U+1F601 , то в коде на R вам необходимо добавить его в текст сообщения вот так — \U0001F601 .

        bot$sendMessage(chat_id, 'Сообщение со смайлом \U0001F601 код которого в таблице U+1F601')

        Результат:

        1.6 Проверка планировщика задач Windows, и отправка уведомления о задачах, работа которых была завершена аварийно

        1.6.1 Видео урок о разработке бота для контроля планировщика заданий

        1.6.2 Конспект о разработке бота для контроля планировщика заданий

        Для работы с планировщиком заданий Windows вам необходимо установить пакет taskscheduleR , и для удобства работы с данными установим пакет dplyr .

        # Установка пакетов install.packages(c('taskscheduleR', 'dplyr')) # Подключение пакетов library(taskscheduleR) library(dplyr)

        Далее с помощью функции taskscheduler_ls() мы запрашиваем информацию о задачах из нашего планировщика. С помощью функции filter() из пакета dplyr мы убираем из списка задач те, которые были успешно выполненны и имеют статус последнего результата 0, и те, которые ещё ни разу не запускались и имеют статус 267011, выключенные задачи, и задачи которые выполняются в данный момент.

        # запрашиваем список задач task  task  taskscheduler_ls() %>% filter(! `Last Result` %in% c("0", "267011") &  `Scheduled Task State` == "Enabled" &  Status != "Running") %>% select(TaskName) %>% unique() %>% unlist() %>% paste0(., collapse = "\n")

        В объекте task у нас теперь список задач, работа которых завершилась ошибкой, этот список нам надо отправить в Telegram.

        Если рассмотреть каждую команду подробнее, то:

        • filter() — фильтрует список задач, по описанным выше условиям
        • select() — оставляет в таблице только одно поле с названием задач
        • unique() — убирает дубли названий
        • unlist() — переводит выбранный столбец таблицы в вектор
        • paste0() — соединяет названия задач в одну строку, и ставит в качестве разделителя знак перевода строки, т.е. \n .

        Всё что нам остаётся — отправить этот результат в телеграм.

        bot$sendMessage(chat_id, text = task, parse_mode = "Markdown" )

        Итак, на данный момент код бота выглядит вот так:

        # Подключение пакета library(telegram.bot) library(taskscheduleR) library(dplyr) # инициализируем бота bot  Bot(token = "123456789:abcdefghijklmnopqrstuvwxyz") # идентификатор чата chat_id  123456789 # запрашиваем список задач task  taskscheduler_ls() %>% filter(! `Last Result` %in% c("0", "267011") & `Scheduled Task State` == "Enabled" &  Status != "Running") %>% select(TaskName) %>% unique() %>% unlist() %>% paste0(., collapse = "\n") # если есть проблемные задачи отправляем сообщение if ( task != "" )  bot$sendMessage(chat_id, text = task, parse_mode = "Markdown" ) >

        При использовании приведённого выше примера подставьте в код токен вашего бота и ваш идентификатор чата.

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

        Так же вы можете вынести различные настройки в отдельный файл конфигурации, и хранить в нём id чата и токен. Читать конфиг можно например с помощью пакета configr .

        [telegram_bot] ;настройки телеграм бота и чата, в который будут приходить уведомления chat_id=12345678 bot_token=123456789:abcdefghijklmnopqrstuvwxyz"
        library(configr) # чтение конфина config  read.config('C:/путь_к_конфигу/config.cfg', rcmd.parse = TRUE) bot_token  config$telegram_bot$bot_token chat_id  config$telegram_bot$chat_id

        1.7 Настраиваем расписание запуска проверки задач

        Наиболее подробно процесс настройки запуска скриптов по расписанию описан в этой статье . Тут я лишь опишу шаги, которые для этого необходимо выполнить. Если какой-то из шагов вам не понятен, то обратитесь к статье на которую я указал ссылку.

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

        1. Пропишите в системную переменную Path путь к папке в которой установлен R, в Windows путь будет примерно таким: C:\Program Files\R\R-4.0.2\bin .
        2. Создайте исполняемый bat файл, в котором будет всего одна строка R CMD BATCH C:\rscripts\check_bot\check_bot.R . Замените C:\rscripts\check_bot\check_bot.R на полный путь к вашему R файлу.
        3. Далее настройте с помощью планировщика задач Windows расписание запуска, например на каждые пол часа.

        1.8 Заключение

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

        Я описал задачу контроля планировщика заданий Windows, но вы можете использовать материал этой главы для отправки любых уведомлений, от прогноза погоды до котировок акций на фондовой бирже, т.к. R позволяет вам подключиться к огромному количеству источников данных.

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

        1.9 Тесты и задания

        1.9.1 Тесты

        Для закрепления материла рекомендую вам пройти тест доступный по ссылке.

        1.9.2 Задания

        1. Создайте с помощью BotFather бота.
        2. Перейдите к диалогу с ботом, и узнайте идентификатор вашего с ботом чата.
        3. Отправьте с помощью созданного бота в telegram первые 20 строк из встроенного в R набора данных ToothGrowth .

        Если вы всё сделали правильно то результат будет следующим:

        Боты для рассылок в Телеграме: как их создавать и использовать

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

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

        Зачем для рассылки в Телеграме нужен бот

        Бот в Телеграме можно настроить на рассылку, чтобы он мог отправлять сообщения всем пользователям, которые его запустили. Как это выглядит на практике:

        • компания привлекает аудиторию в бот
        • пользователь активирует его командой /start, давая тем самым согласие на получение сообщений
        • бот приветствует подписчика и добавляет его в список получателей будущей рассылки

        Важно: нельзя создавать телеграм-бот для рассылки в личные сообщения – это будет считаться спамом. Нужно, чтобы человек самостоятельно активировал бот и подписался на его обновления, нажав кнопку старта. Это действие является согласием на получение сообщений, в том числе и массовой рассылки.

        Отправлять сообщения подписчикам бота – легальный способ рассылки в Телеграме

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

        Рассылка в Телеграме: виды, особенности и инструкция по запуску

        Возможности ботов для рассылки

        Бот позволяет использовать Телеграм как полноценный канал для рассылок. Для этого у него есть следующие возможности:

        • добавлять медиафайлы
        • форматировать текст, добавлять ссылки и эмодзи
        • отправлять рассылку в указанное время
        • персонализировать сообщения
        • сегментировать подписчиков

        Как правильно использовать эмодзи в рассылках

        Как создать бот для рассылки в Телеграм

        Создать бот легко, для этого не нужен программист. Все делается бесплатно с помощью официального бота Телеграма. Для этого нужно:

        1. Перейти в BotFather и нажать кнопку Start внизу экрана.
        2. В появившемся списке нажать команду /newbot.
        3. Придумать имя бота, которое пользователи будут видеть в списке контактов – нужно выбрать узнаваемое имя, например, Бот Sendsay.
        4. Придумать имя пользователя – уникальное имя бота на английском, которое будет указано в ссылке. В нем обязательно должно быть слово bot, например, SendsayBot. Юзернейм может быть занят, тогда надо будет придумать что-то другое.
        5. Получить токен – это уникальный код бота, который понадобится для интеграции с сервисами рассылок.

        Готово! Вы создали собственный телеграм-бот.

        Также через BotFather можно добавить описание и аватар бота, поменять его юзернейм, добавить список команд, которые он будет выполнять, или вообще удалить 

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

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

        Как настроить бот для рассылки сообщений в Телеграме

        Есть 2 основных способа рассылать сообщения подписчикам бота: через сервисы рассылки и через конструкторы. У каждого способа есть свои особенности, плюсы и минусы.

        Настройка через сервисы рассылки

        Есть крупные сервисы для рассылок, через которые можно отправлять сообщения по разным каналам. Например, сервис Sendsay, который может отправлять рассылки через:

        • электронную почту
        • личные сообщения ВКонтакте
        • боты в Телеграме
        • SMS
        • Web Push
        • мобильные push-уведомления

        Делать рассылку в телеграм-боте через такие сервисы удобно, потому что:

        Омниканальность как мастхэв для бизнеса

        • все подписчики хранятся в одном месте – у каждого пользователя есть карточка с контактными данными,
        • есть удобный интерфейс создания сообщения – с функциями персонализации и верстки текста ,
        • подключается сквозная аналитика – по UTM-меткам в ссылке сообщения можно анализировать поведение пользователя на сайте.

        Интерфейс создания сообщения для рассылки через бот в Телеграме

        Еще к таким сервисам легко подключить телеграм-бот и начать рассылку. Например, для подключения бота к Sendsay нужно добавить уникальный токен, который выдал BotFather, и все – бот настроен и может отправлять сообщения своим подписчикам.

        Для подключения бота к Sendsay нужно просто добавить уникальный токен 

        Такие сервисы позволяют не только запустить рассылку за пару часов, но и сэкономить бюджет. Так, рассылка в Телеграме через Sendsay будет стоить 660 ₽ в месяц для бота, у которого менее 1000 подписчиков.

        У таких сервисов также есть персонализация сообщений и сегментация подписчиков. Но эти функции осложняются особенностями Телеграма: он не передает никакой личной информации о подписчике кроме имени и фамилии.

        В Sendsay эта проблема решается с помощью объединения ID пользователя в Телеграме с его электронной почтой. Если пользователь переходит в Телеграм из письма, то Телеграм-контакт свяжется с email-контактом. После этого данные email будут доступны и для Телеграма.

        Настройка через сервисы-конструкторы

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

        Пример взаимодействия в режиме чата: бот предлагает написать сообщение, в ответ на которое отвечает следующим сообщением

        Через такие сервисы-конструкторы отправляют и обычные рассылки: разовые письма и полноценные цепочки в том числе и триггерные. Запускать рассылку может наступление конкретного времени, действие на сайте или действие в боте – получен или не получен ответ, активирована кнопка действия или нет, и прочее.

        Интерфейс конструкторов интуитивно понятный. Для создания простых рассылок и цепочек не нужны знания программирования, но для сложных вариантов интеграции с CRM-системами понадобится программист и умение работы с переменными.

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

        Как анализировать статистику по email-рассылкам: основные нюансы

        Как анализировать статистику по email-рассылкам: основные нюансы

        Минус – стоимость. В среднем такие сервисы стоят от 900 до 3000 ₽ в месяц. Если у вас есть сервис рассылок и вам нужен бот для простых цепочек, то в таком конструкторе нет необходимости.

        Итак, резюмируем о рассылках через телеграм-боты.

        • Боты в Телеграме – многофункциональные помощники, которые могут выполнять запрограммированные действия.
        • Легально делать массовые рассылки можно только подписчикам бота. Использовать бот для рассылки в Телеграм конкретным пользователям нельзя, если пользователь не давал согласия. В противном случае такая рассылка будет считаться спамом.
        • Отправлять сообщения можно с помощью сервисов рассылки или специальных конструкторов.
        • Для рассылки нужно создать собственный бот и подключить его к сервису с помощью токена.
        • Сервисы рассылок удобны тем, что всех подписчиков можно хранить в одном месте, быстро создавать сообщения и изучать статистику по рассылкам.
        • Конструкторы – сервисы с более широким функционалом, который позволяет создавать сложные механики взаимодействия с ботом, делать воронки продаж и запускать игры для вовлечения. Минус – стоимость.
        • Бесплатную рассылку в телеграм-бот можно делать только на пробных тарифах некоторых сервисов. Для полноценной работы с мессенджер-маркетингом нужно оплачивать доступ или программировать бот самостоятельно.

        Что такое спам-рассылка, как ее отличить от честного email-маркетинга и как заблокировать

        Кроме того, мы делимся полезной информацией в сфере digital-маркетинга в нашем телеграм-канале, при подписке на который дарим книгу «Email-маркетинг для бизнеса». Подробнее о том, как ее получить, рассказали в закрепленном сообщении канала.

        Подключайте Sendsay, чтобы сделать ваш email-маркетинг мощнее ��

        Бот пишет первым в Телеграм

        Пишет ли бот первым в Телеграм, как сделать, чтобы он писал первым и как запретить ботам в Телеграмме отправлять сообщения. Пошаговая инструкция + обзор комментинга в Telegram! Может ли бот писать первым в Telegram? По общему правилу, нет. Робот оставляет комментарий только после того, как пользователь нажал кнопку «Start» и подтвердил начало взаимодействия. Но есть лайфхаки, как работать с ботами в Telegram!

        Как работает бот в Телеграмм и пишет ли первым

        Боты не могут писать в Телеграме первыми по одной простой причине: в противном случае пользователи столкнулись бы со спамом.

        Пошаговая схема взаимодействия: Клиент заходит в бота Телеграм. К примеру, @ChatLabs_bot. Появляется стандартная заглушка с описанием и кнопкой старта. В Telegram бот не пишет первым сам.

        Пользователь нажимает «Старт» — начинается взаимодействие. Бот в ТГ присылает ссылки, обучающие материалы, каталог интернет-магазина, ответы на типичные вопросы и так далее (зависит от того, какую логику продумали разработчики).

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

        Как сделать, чтобы бот писал первым: инструкция со скринами

        7 декабря 2021 года разработчики Телеграм выпустили обновление API 5.5. Оно как раз и позволило сделать так, чтобы бот писал первым. Правда, с ограничениями.

        Итак, чтобы бот писал первым без нажатия кнопки «Start» пользователем, необходимо выполнить условия: Создать закрытую группу в Телеграмме. Попасть в нее удастся только по ссылке (урлу). Но пользователь не присоединяется автоматически, а только отправляет заявку. Ее должен одобрить admin (администратор).

        Сделать бота в Телеграм (в пошаговой инструкции мы рассказывали, как запустить @Bofather и получить API-токен). Подключить робота к каналу и выдать права администратора.

        Подключить логику. Когда человек подает заявку на вступление, бот ее автоматически одобряет + пишет первым пользователю Telegram.

        В данном случае клик по пригласительной ссылке в закрытый канал Телеграм воспринимается ботом как «первый контакт» (аналог клика на «Старт»). В любом случае: пользователь как бы дает согласие на отправку ему сообщений.

        Под капотом в Telegram реализованы:

        • approveChatJoinRequest — метод Telegram Api для подтверждения заявки на вступление. Параметры — chat_id (идентификатор чата) и user_id (айди пользователя). В случае успеха возвращает true.
        • can_invite_users — права администратора на приглашение пользователей. Булево значение — true (может приглашать) или false (не может инвайтить).
        • sendMessage — метод для отправки текстовых сообщений. Обязательные параметры — chat_id и text. Опционально могут использоваться disable_notification (отключить уведомление), protect_content (защита от пересылки и сохранения), reply_to_message_id (айди оригинального сообщения в случае реплая и так далее).

        Обратите внимание, что в Telegram бот пишет первым не только текст. В Телеграмме бот может отправить:

        • фотографию / изображение (метод sendPhoto);
        • аудио (sendAudio);
        • документы до 50 Мб (sendDocument);
        • видео MPEG4 до 50 Mb (sendVideo);
        • анимацию GIF or H.264/MPEG-4 AVC (sendAnimation);
        • голос OGG с OPUS (sendVoice), а также многие другие — к примеру, локацию, активность в чате, контакты, анимированные эмоджи.

        Может ли бот Телеграм писать первым? Да, но не во всех случаях. Только если он добавлен в закрытую группу с правами администратора и одобряет заявки на вступление. Опция стала возможной после появления версии API 5.5 Телеграм в 2021 году.

        Как сделать приветственное сообщение в боте и что писать в первом сообщении

        Запустить @BotFather и выбрать команду /setdescription, чтобы задать описание.

        Приветственные сообщения в Telegram-боте необходимы, чтобы:

        • объяснить пользователю, куда он попал, что здесь происходит;
        • вызвать положительные эмоции первого контакта;
        • познакомить с кратким перечнем услуг / товаров / функций или возможностей;
        • объяснить, как пользоваться роботом.

        Основные особенности, как сделать приветственное сообщение для бота Телеграмм:

        • объем — от 1 до 4 предложений;
        • списки, эмоджи возможны, если упрощают текст;
        • приветствие в Телеграм обязательно (добрый день, привет, здравствуйте);
        • сообщение должно соответствовать tone of voice компании;
        • акцентирование (отдельные слова и фразы можно выделить жирным);
        • ссылки должны быть «вшиты», а не выглядеть как длинный URL на 200 символов.

        В сети можно найти приветственное сообщение для чат бота (пример психолога, интернет-магазина, онлайн-школы, сервиса доставки, ресторана).

        Телеграм бот пишет первым: первонах в Telegram для автокомментинга и как он работает

        Бот первонах Телеграмм — робот, который первым пишет под новыми постами в группах. Чтобы сделать его, нужно дергать эндпоинт и проверять, есть ли новое сообщение в ТГ. Если появился новый пост, бот оставляет под ним комментарий с заданными настройками автокомментинга.

        Здесь в Telegram могут быть разные варианты:

        • сообщения-первонахи в Телеграм по заданным настройкам («Спасибо!», «Понравилось!», «Очень ценная информация!», «Вы правы!», «Нравится ваш стиль изложения!» и другие примеры);
        • сообщения, которые бот пишет первым на Chat GPT (искусственный интеллект имитирует общение с реальным пользователем, поэтому риски попасть в спам гораздо меньше).

        Бот первонах, который пишет первым под постами / сообщениями, необходим для того, чтобы:

        • привлечь внимание к профилю / странице Телеграм;
        • перевести трафик с группы-донора на ссылку в профиле;
        • выделиться среди комментариев в Телеграм;
        • нарастить трастовость робота и так далее.

        Бот публикации комментариев под постами в Телеграм (первонах) первым может:

        • оставлять осмысленные сообщения (интеграция с искусственным интеллектом и Chat GPT);
        • писать комментарии первым как от лица пользователя, так и от лица канала (зависит от того, что именно хотите продвигать);
        • работать с нескольким группами Телеграм параллельно;
        • обходить проверку ботов (к примеру, когда канал публикует посты два-три раза для выявления роботов);
        • оставлять несколько комментариев и даже формировать видимость диалога между разными ботами;
        • отвечать первым на посты Телеграмм (такие комментарии не банят);
        • мониторить или все каналы, или заданные в списке;
        • изменять сообщение (редактировать) через пару минут после публикации, когда уже прошел антиспам-проверку;
        • мониторить первые комментарии, оставленные под постом (если администраторы Телеграм удалили их, писать повторные);
        • рандомизировать текст (если это необходимо);
        • настраивать задержку первого сообщения в группе Телеграмм (чтобы не попасть под ботов-стирателей первокомментов);
        • редактировать фото / имя / статус / информацию о себе и так далее.

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

        Чтобы бот писал первым под постами, нужно продумать логику и реализовать ее в коде. Языки программирования для роботов-первонахов в Телеграмме, которые пишут первыми, — php, Python, Javascript, Java или другие.

        Чтобы создать и запустить бота Telegram, который будет писать первым в сообществах, каналах и группах (автокомментинг), необходимо:

        1. Продумать логику — как работает (однопоточный, многопоточный), как минимизировать риск бана первых сообщений в Телеграм (задержка публикации), как уберечься от попадания в спам (осмысленные комментарии с использованием искусственного интеллекта) и так далее.
        2. Написать код скрипта. Реализовать бота для Телеграмм можно на php, Python, Javascript, Java или других языках программирования.
        3. Загрузить на сервер. Установить все необходимые зависимости. Программы для работы ботов, пишущих первыми комментарии, весят немного. Это значит, что для них можно выбрать что-то из нашей подборки хостингов.
        4. Найти аккаунты, которые будут оставлять сообщения и писать первыми. Будьте осторожными, если хотите отправлять комментарии с основного аккаунта. Не забывайте о том, что есть риск столкнуться с баном от администраторов.

        Разработать бота, который пишет первым в группах, каналах, чатах можно не только для Телеграмма. Часто подобные решения заказывают для Вконтакте, Вайбера или других социальных сетей. Обратите внимание, что скрипты для первых комментариев (автокомментинга) ≠ чат-ботам в Телеграм.

        Как запретить ботам в Телеграмме писать первыми

        После обновления 2021 года пользователи мессенджера столкнулись с проблемой: боты пишут первыми и спамят личные сообщения.

        Основные причины, почему роботы Телеграм начинают писать в личку «без спроса»: Активизировались старые боты, с которыми вы взаимодействовали год или два года назад (или даже больше). Пользователь мог нажать «Старт», получить информацию / консультацию / бонусы, а затем удалить переписку у себя. Как результат — создается впечатление, как будто бы bot пишет первым и без разрешения. Но на деле пользователь Телеграмм сам дал роботу возможность отправлять сообщения.

        • Пользователь Телеграм подавал заявки в закрытые ресурсы (каналы / чаты) ранее. Заявку могли не одобрить, а пользователь и вовсе забыл о том, что оставлял ее. Спустя время (или по заданию администратора) бот обнаружил заявку, а вместе с ней — и условное разрешение писать первым.
        • анализировать в истории переписки и старые боты Telegram;
        • быть осторожными, когда оставляете персональные данные и контакты в Телеграм;
        • подавать заявки только в те закрытые ресурсы (каналы / чаты) Telegram, которым можете доверять.

        Можно удалить и заблокировать бота в Telegram, который пишет первым (и, как создается впечатление, без разрешения пользователя). Для этого необходимо перейти в настройки бота в Телеграм и выбрать «Delete chat». Также есть возможность пожаловаться: для этого необходимо нажать на «Report» и указать причину: рассылка спама, неприемлемый контент в Телеграм и так далее.

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

        Поделиться

        • Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
        • Нажмите, чтобы поделиться в Telegram (Открывается в новом окне)
        • Нажмите, чтобы поделиться в WhatsApp (Открывается в новом окне)

        Чат-боты в Telegram на Python и Aiogram: пишем первого бота

        Большой гайд по работе с Aiogram на примере эхо‑бота — чат‑бота, который повторяет за пользователем его фразы. Весь код — внутри статьи.

        Иллюстрация: Polina Vari для Skillbox Media

        Антон Яценко

        Антон Яценко
        Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.

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

        Благодаря этой статье вы научитесь с нуля создавать чат-ботов с помощью Python и библиотеки Aiogram. Мы напишем эхо-бота, который отвечает на сообщения пользователя точно такими же сообщениями. Это первая часть урока по Aiogram — во второй части мы добавим боту кнопки и новые фичи.

        Содержание

        • Библиотеки для создания бота
        • Краткое описание Aiogram
        • Создаём эхо-бота
        • Шаг 1. Устанавливаем Python
        • Шаг 2. Создаём виртуальное окружение
        • Шаг 3. Создаём бота
        • Шаг 4. Подключаем Aiogram
        • Шаг 5. Пишем код для эхо-бота
        • Шаг 6. Запускаем бота и проверяем работу
        • Что дальше?

        Библиотеки для создания бота

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

        Aiogram. Современная библиотека, набирающая популярность: многие чат-боты написаны на ней. В этой и последующих статьях цикла мы будем работать именно с Aiogram. Библиотека реализует асинхронное выполнение кода, что позволяет не останавливать работу бота в ожидании ответа пользователя. Кроме того, у Aiogram есть подробная документация и большое русскоязычное комьюнити.

        Python-telegram-bot. Одна из первых библиотек для создания ботов. Отличается от Aiogram синхронным подходом к работе, то есть при ожидании ответа от пользователя выполнение кода останавливается.

        TeleBot. Библиотека для создания простых ботов, позволяющая работать с асинхронным и синхронным подходом на выбор. Подходит для небольших проектов. Подробнее можно узнать в документации.

        Что нужно знать об Aiogram перед написанием кода

        Перед тем как приступить к написанию нашего бота, остановимся подробнее на одной технической особенности Aiogram.

        Как уже было сказано ранее, одно из главных достоинств библиотеки — полная асинхронность. Она использует синтаксис async/await, который позволяет программе выполнять несколько задач одновременно и эффективно управлять потоком выполнения.

        Вот простой пример функции, использующей механизм async/await:

        Другой плюс Aiogram — в большом наборе инструментов и хуков, которые можно использовать для добавления дополнительных функций и настроек бота. Библиотека обеспечивает полный доступ ко всем возможностям Telegram API, включая отправку и получение сообщений, управление клавиатурой, обработку медиафайлов (фотографий, видео, документов) и многое другое.

        Вот несколько полезных источников, которые помогут разобраться в библиотеке и следить за её обновлениями:

        • официальная документация,
        • репозиторий библиотеки на GitHub,
        • русскоязычный телеграм-чат, посвящённый Aiogram,
        • англоязычный чат, посвящённый Aiogram,
        • канал с новостями библиотеки,
        • тестовый бот на основе Aiogram.

        Создаём эхо-бота

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

        Для этого нам необходимо:

        • установить Python и настроить виртуальное окружение;
        • зарегистрировать бота в специальном телеграм-канале @BotFather;
        • установить библиотеку Aiogram;
        • написать код эхо-бота, связав его по API с Telegram.
        Шаг 1

        Устанавливаем Python

        На macOS или Linux. Python установлен в эти операционные системы изначально. Чтобы проверить его наличие, откройте терминал и введите команду:

        На Windows требуется установка Python. Сделать это проще всего по нашей инструкции.

        Шаг 2

        Создаём виртуальное окружение

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

        virtualenv устанавливается через терминал:

        Открываем его, жмём кнопку «Запустить» и вводим команду /newbot:

        Теперь напишем название и юзернейм для нашего бота. Назовём его echo_skillbox_bot (теперь это имя занято, так что вам надо будет придумать своё). В ответ придёт наш токен, который мы будем использовать для подключения к API Telegram.

        Этот токен мы сохраняем — он потребуется нам в будущем.

        Шаг 4

        Подключаем Aiogram

        Для установки Aiogram воспользуемся менеджером пакетов PIP. Вводим в терминал:

        Находим нашего бота в Telegram по имени @echo_skillbox_bot и запускаем его, нажав на кнопку Начать. В ответ на это или на команду /start нам придёт приветственное сообщение:

        Попробуем написать что-то:

        Как мы видим — всё работает. Бот возвращает нам наши сообщения.

        Что дальше?

        Расширять функциональность бота, указывая для разных команд пользователя разные ответы. Например, добавить раздел помощи, который будет появляться по команде /help. Или настроить запуск кода на виртуальном сервере, чтобы бот работал независимо от вашего компьютера.

        Во второй части статьи мы добавим к нашему боту кнопки и новые возможности. Так что обязательно заходите и читайте 🙂

        Больше интересного про код в нашем телеграм-канале. Подписывайтесь!

        Читайте также:

        • С# для новичков: развеиваем мифы и пишем простого чат-бота
        • «Я удивился, когда написал код, а он заработал»: как живёт начинающий Python-разработчик
        • Учимся верстать: что такое CSS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *