Как сделать чтобы бот писал в группу телеграмм

Добавил пользователь Евгений Кузнецов
Обновлено: 18.09.2024

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

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

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

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

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

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

Заключение


Но вы же хотите канал вести нормально, а не как попало? :) А нормально — это значит не только годный контент выдавать подписчикам, но и оформлять на уровне!

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

Система этих ботов в Телеграме на самом деле маленько запутанная :) Я не сразу въехал что к чему и почему, например, одного бота нужно создавать через другого бота :) Но я помогу в этом разобраться и после того как начнете потихоньку работать с ботами, пазл в голове полностью сложится!

Боты ControllerBot, BotFather и собственный наш бот. Что к чему!

Для начала внесу немного ясности, чтобы сразу хоть немного прояснить ситуацию с этими ботами :)

ControllerBot — это, проще говоря, основной управляющий бот в Телеграме. Через него вы можете управлять своими каналами (подключать к каналам собственных ботов и отключать), перейти к публикации поста в канале.

С этого бота мы начнём работу по созданию своего бота и подключению его к каналу.

BotFather — служит непосредственно для управления вашими ботами. Через него можно создать и редактировать своих ботов.

Наш собственный бот, которого мы создадим и назовём как душе угодно, уже будет нам нужен именно для создания и оформления постов на наш канал.

Создаём собственного бота через ControllerBot и BotFather




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




























Его нужно скопировать в ControllerBot, с которым мы сразу начинали работу.

Вставив ключ в окно чата ControllerBot, он в ответ выдаст инструкцию по добавлению канала к нему. Выполняем её…

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













В строке поиска вверху [1] вставьте имя скопированного бота и после, когда он появится в результатах поиска, кликните по нему [2].










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






















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

Заключение

Без ботов, работая со своим каналом, пожалуй, не обойтись. Ну или обойтись, но тогда канал будете вести не совсем качественно и упустите разные возможности! Поэтому, скорее всего, придётся с этими всеми нюансами столкнуться, если решите всерьёз заниматься работой в Telegram, т.е. развитием своего канала.

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

Буду рад адекватным комментариям и готов подискутировать по теме статьи :)

Сделай репост – выиграй ноутбук!

Каждый месяц 1 числа iBook.pro разыгрывает подарки.

  • Нажми на одну из кнопок соц. сетей
  • Получи персональный купон
  • Выиграй ноутбук LENOVO или HP

27 комментариев

У меня в "Описании канала" нет ссылки))) никакой! Есть только мое описание канала словами. Уже и переустанавливала телеграм, не помогло.

Автор: Владимир Белев

Здравствуйте. Открываете чат вашего канала. Вверху будет его заголовок, кликните по нему и в открывшемся окне "информация о канале" будет ссылка на него (так и написано "ссылка").

А что делать если в открытом канале уже более 200 подписчиков, и Телеграм пишет что теперь можно добавлять только по ссылке? Есть алгоритм решения этой задачи.

Автор: Владимир Белев

Возможно другим ботом, но честно говоря, не вникал в подробности при такой же ситуации как у вас. Еще не сталкивался.

А как сделать автопостинг?

Автор: Владимир Белев

Здравствуйте! Спасибо за такую подробную инструкцию! Как я могу начать работать уже в существующем боте? Его создали и связали с каналом уже давно. Меня сделали админом на этом канале. Я начала диалог с ботом и он предлагает создать новый канал. Как вы уже поняли, я новичок и нечего не понимаю 🙈😭

Автор: Владимир Белев

А как бот называется, с которым вам нужно работать?

Здравствуйте Владимир. Как-то забыл про ваш сайт когда создавал свой канал в телеграм. Но как говорится Гугл в помощь.
Очень полезный для меня пост.
Подскажите не могу найти бота который из ссылки делает публикацию всего контента размещённого по ней. То есть формирует полноценный пост из того что размещено по ссылке которую ему указать.
Спасибо.

Автор: Владимир Белев

Здравствуйте! К сожалению я о таком боте и не знаю) Слышал, что вроде есть что-то такое, но никогда не требовался. Сейчас выделил несколько минут, погуглил и не нашел. Если вдруг найдете и вспомните об этом комментарии, киньте ссылку, пожалуйста на бота) Тоже может пригодится когда-нибудь.

Спасибо, за обучение. Было полезно.

Спасибо, Владимир! Очень помогли Ваши разъяснения! Всё получилось.

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

Автор: Владимир Белев

Все точно по тем же действиям. Вы их повторили в точности для второго канала?

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

Шаг 1. Создание телеграм бота

Для создания нового бота отправляем следующую команду /newbot. После чего бот запросит имя вашего нового бота, оно обязательно должно заканчиваться на Bot. В случае успеха в ответ получаем уникальный токен бота, который понадобится для дальнейшей работы. И не забудьте добавить вновь созданного бота в ваши контакты отправив ему команду /start


Шаг 2. Получить токен и chat id бота

Токен бота у нас уже есть, а chat id можно получить 2 способами:


Запрос к URL будем делать с помощью cURL :

Как видите все довольно просто. В переменной $message можно передавать любой текст, который будет отправляться ботом пользователю.

Прокси для телеграм бота

Прокси сервера можно найти на сайтах-списках прокси или купить. Чтобы соединиться через прокси-сервер в параметрах вызова cURL добавляем несколько строк

Где 127.0.03.1:8080 — это адрес и порт прокси-сервера и CURLPROXY_SOCKS5 — это тип соединения, в данном случае SOCKS5

Добавить бота в группу телеграм

Заключение

А если немного изучить документацию, по аналогии можно создавать аналогичных ботов для приема заявок с сайта в Viber или например ВКонтакте.

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




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


Удалить значение из массива по ключу на PHP довольно простая задача, но вот когда необходимо удалить элемент массива именно по значению, то тут возникают небольшие сложности. Вроде бы банальная задача, но придется воспользоваться небольшой хитростью. В этой статье рассмотрим как Читать далее



Регулярные выражения - это мощный алгоритм сопоставления с образцом, который может быть выполнен в одном выражении. Регулярные выражения используют арифметические операторы, такие как (+, -, ^) для создания сложных выражений. Регулярные выражения помогают вам выполнять такие задачи, как проверка адресов Читать далее


Телеграм боты — что необходимо знать программисту о telegram bot?

Telegram API vs Telegram Bot API

Рассказываю по порядку.

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

Для написания ботов был создан Telegram Bot API — надстройка над Telegram API. Перевод с официального сайта:

Почему-то мало кто знает о том, что Телеграм боты могут работать напрямую через Telegram API. Более того, таким образом можно даже обойти некоторые ограничения, которые даёт Bot API.

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

На чём пишут Телеграм-ботоы

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

Как получать апдейты в Bot API

Получать апдейты можно одним из двух способов:

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

Вебхук — сделать так, чтобы Телеграм сам отправлял запросы по нужному URL.

Если вы попробуете загуглить, как написать Телеграм-бота на Python, вам предложат воспользоваться библиотеками python-telegram-bot и telebot. Но не стоит.

Ну, если вы только хотите познакомиться с разработкой ботов и написать своего hello-world-бота, то можете, конечно использовать и их. Но эти библиотеки могут далеко не всё. Среди разработчиков ботов лучшей библиотекой для ботов на Python считается aiogram. Она асинхронная, использует декораторы и содержит удобные инструменты для разработки. Ещё был хороший Rocketgram, но он давно не обновлялся.

Также ботов часто пишут на JavaScript, для этого обычно используется Telegraf. Библиотеки есть и для многих других языков, но используют их реже.

Если же вы хотите использовать Telegram API, то можете воспользоваться Python’овскими Telethon и Pyrogram.

Пример кода бота

Если вы хотите получить какое-то представление о том, как вообще выглядит код бота, вот вам пример использования на aiogram с его странички на GitHub:

Этот бот будет отвечать на команды /start и и /restart.

Создание бота

Единственная информация о Телеграм-ботах, которой в интернете полным-полно: как создать бота. Это делается через специального бота BotFather. Когда вы создадите бота, BotFather даст вам его токен. Токен выглядит примерно так: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw . Именно с помощью токена вы сможете управлять ботом.


Один пользователь может создать до 20 ботов.

В BotFather удобно управлять ботами своими командой /mybots .

Юзернеймы

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

Как поменять юзернейм бота

Если у вас есть бот, и вы хотите дать ему более короткий юзернейм (который может быть занят неработающим ботом), то вы, теоретически, можете это сделать через @BotSupport.

Для этого бот должен (внезапно) быть рабочим, а также поддерживать английский язык.

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

Если вы везунчик 9999 lvl — вам ответят.

Оформление бота

Открыв бота, пользователи могут увидеть его профиль.

Телеграм боты - что необходимо знать программисту

Оформление бота настраивается в BotFather: меню /mybots → Edit Bot . Там можно изменить:

Информация (About) — это текст, который будет виден в профиле бота.

Аватарка. Аватарки ботов, в отличие от аватарок пользователей и чатов, не могут быть анимированными. Только картинки.

Команды — тут имеются ввиду подсказки команд в боте. Подробнее о командах ниже.

Inline Placeholder — об инлайн-режиме см. ниже.

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

Запуск бота пользователем

…если пользователь использует официальный клиент

В Телеграме можно делиться файлами до 2 ГБ, но в Bot API более жесткие лимиты: боты могут скачивать файлы до 20 МБ и отправлять файлы до 50 МБ.

Работа с файлами в Bot API

Если бот уже загрузил файл на сервер Телеграма, то он может использовать file_id, чтобы отправлять этот файл.

Загружать файл на сервер можно в том числе и по URL файла.

Куда может писать бот

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

Боты не могут писать другим ботам.

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

В одной группе может быть до 20 ботов. В публичные группы (группы с юзернеймом) ботов могут добавлять только админы.

Телеграм боты - что необходимо знать программисту

Как боты добавляют кнопки

Подробнее о кнопках тоже

Супергруппы

На самом деле многие группы в Телеграме являются супергруппами.

Почему так? Раньше было четкое разделение на группы и супергруппы. По задумке, супергруппы — это группы для сообществ. Супергруппы могут иметь больше участников, публичные ссылки и другие плюшки.

Со временем, видимо, решили, что это неудобная концепция. Теперь обычная группа становится супергруппой, когда у группы меняются какие-нибудь настройки (подробнее тут). Вот такой костыль.

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

id пользователей и чатов

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

В токене бота первая часть — это его id. Например, токен 110201874:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw принадлежит боту с id 110201874 .

В Bot API перед id супергрупп и каналов пишется -100. Так, id 1356415630 превращается в -1001356415630 . Осторожно: вы не сможете сохранить это значение в 32-битный тип числа.

Команды — о них в следующем пункте.

Телеграм боты - что необходимо знать программисту

Я включил Privacy mode, а он не работает

Нужно удалить бота из группы и добавить заново.

Это могло нарушить работу антиспам- и других ботов.

Сейчас баг уже исправлен.

Команды

Команды подсвечиваются как ссылки: нажатие отправляет команду в чат.

Телеграм боты - что необходимо знать программисту

В группах, чтобы различать команды от разных ботов, Телеграм предлагает ставить в конце команды юзернейм бота. Например: /[email protected] .

Телеграм боты - что необходимо знать программисту

Разметка в Telegram API (Телеграм боты)

Способы выделения текста:

Жирный текст

Моноширинный текст ("в строке" и "блоком")

Кнопки

Инлайн-кнопки

URL button — кнопка с ссылкой.

Switch to inline button. Кнопка для переключения в инлайн-режим (об инлайн-режиме см. ниже). Кнопка может открывать инлайн в том же чате или открывать меню для выбора чата. Можно указать в кнопке запрос, который появится рядом с никнеймом бота при нажатии на кнопку.

Дополнительные виды кнопок

Login URL button — специальная кнопка для авторизации пользователей на сайте. Использовалась, например, в официальном боте @discussbot (до добавления нативных комментариев в Телеграм).

Клавиатурные кнопки

Есть другой тип кнопок: keyboard buttons. Они отображаются вместо клавиатуры как подсказки. При нажатии на такую кнопку пользователь просто отправит этот текст.

При этом в личных чатах с помощью кнопки можно:

Запросить номер телефона пользователя,

Запросить геолокацию пользователя,

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

Телеграм боты - что необходимо знать программисту

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

Ещё о кнопках

Показать клавиатурные кнопки,

Убрать все клавиатурные кнопки,

Таким образом, нельзя показать оба типа кнопок одновременно.

Взаимодействие с ботом

Ссылки на Телеграм боты.

Юзернеймы ботов работают так же, как и любые другие юзернеймы в Телеграме: бота @examplebot можно открыть по ссылке t.me/examplebot.

Также существует прямая ссылка: tg://resolve?domain=examplebot

Подробнее о ссылках tg://

Такие ссылки могут не только заменять ссылки t.me, но и задавать свои действия. Например, tg://settings открывает настройки.

Список известных таких ссылок есть канале @DeepLink.

Ссылка на добавление в группу

По ссылке t.me/examplebot?startgroup=true у пользователя откроется меню: выбор группы для добавления бота.

Прямая ссылка: tg://resolve?domain=examplebot&startgroup=true

Диплинки

По ссылке t.me/examplebot?start= пользователь может запустить бота с каким-то стартовым параметром ( ).

Как это выглядит:

При переходе по ссылке бот открывается как обычно.

Часто диплинки используются для реферальных программ (в качестве параметра можно передавать id пользователя, который поделился ссылкой). Есть и другие применения. Телеграм боты.

Прямая ссылка: tg://resolve?domain=examplebot&start=

Инлайн-режим. Телеграм боты.

Инлайн-режим (inline mode) — это специальный режим работы бота, с помощью которого пользователь может использовать бота во всех чатах.

В группе можно запретить использовать инлайн всем или некоторым участникам. В официальных приложениях Телеграм это ограничение объединено с ограничением на отправку стикеров и GIF.

Результаты инлайн-режима

Результаты можно отображать двумя способами:

Сеткой. Удобно для выдачи картинок.

  • Вертикальным списком. Удобно для выдачи текста.

Можно совмещать два типа, но корректно отображается это только на Telegram Desktop.

Телеграм боты - что необходимо знать программисту

Приватность и геопозиция в инлайне

Inline feedback

Inline feedback — это апдейты о выбранных инлайн-результатах. Включаются через BotFather.

Телеграм боты - что необходимо знать программисту

Создание наборов стикеров для телеграм ботов

Боты (и только боты!) могут создавать наборы стикеров. При этом каждый набор стикеров должен принадлежать какому-то пользователю. Посмотреть свои наборы стикеров пользователь может с помощью бота @Stickers.

Телеграм боты. Платежи

Телеграм предоставляет ботам возможность принимать платежи от пользователей. Это делается через провайдеров ЮMoney, Сбербанк, Stripe и ещё 7.

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

Платежи, к тому же, не работают на iOS из-за ограничений Apple.

HTML-игры в ботах

Telegram Login Widget

Вы можете добавить на свой сайт авторизацию через Телеграм. Процесс авторизации будет проходить так:

Пользователь должен будет ввести свой номер телефона.

Бот Telegram попросит подтвердить вход.

Телеграм боты - что необходимо знать программисту

Telegram Login Widget не связан с Login URL button (см. раздел про кнопки выше), а является его альтернативой.

Разработка Телеграм ботов

Какие апдейты можно получать

Получение апдейтов: Bot API vs Telegram API

Если вы получили апдейт в Bot API, то второй раз вы его уже не получите.

В Telegram API это не так: пользователь может пользоваться мессенджером через несколько клиентов, каждый из которых должен получать апдейты.

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

Ограничения Bot API не позволяют сделать то же самое.

Лимиты

Конечно, на запросы к серверу существуют лимиты. В Bots FAQ на сайте Telegram названы следующие:

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

Другие известные ограничения в Telegram собраны на limits.tginfo.me — см. раздел про ботов.

Рассылка по пользователям

Смена владельца бота

Осенью 2020 года появилась возможность передавать ботов другому человеку. Это можно сделать в настройках бота в BotFather. Для этого на вашем аккаунте должна быть включена двухфакторная авторизация — не менее, чем за 7 дней до передачи. Передать бота можно только пользователю, который что-либо ему писал.

Локальный сервер Bot API

Также осенью 2020 года исходники Bot API выложили на GitHub. Теперь вы можете поднять собственный сервер Bot API. На GitHub перечислены следующие преимущества:

Скачивание файлов с сервера без ограничения (ограничение на отправку файлов пользователями в Телеграме — 2 ГБ),

Загрузка файлов на сервер до 2000 МБ,

Загрузка файлов на сервер с помощью локального пути и URI файла,

Использование любого локального IP-адреса для вебхука,

Использование любого порта для вебхука,

Возможность увеличить максимальное число соединений до 100000,

Получение локального пути файла вместо загрузки файла с сервера.

Юзерботы

В начале статьи я рассказывал о том, что такое Telegram API и Telegram Bot API.

Юзерботов следует использовать аккуратно: за большую подозрительную активность аккаунт могут ограничить или забанить.

Заключение. Телеграм боты

Я постарался собрать в одном месте и структурировать информацию о всех возможностях Телеграм-ботов. Большое спасибо vanutp, NToneE и Grinrill за помощь с фактами. Если мы что-то забыли — пишите, исправлю.

Я специально не разделял большую статью на несколько постов, чтобы можно было быстро найти нужную информацию. К тому же, в начале статьи есть её содержание. Так что можете сохранить её к себе и использовать как справочник 🙂

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

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