Python Telegram bot рассылка

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

77K открытий

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

Среднесуточный охват пользователей в мессенджерах от Mediascope

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

Telegram бот на Python | Рассылка

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

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

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

Как создать Telegram-бота

Вам нужно будет выбрать отображаемое имя бота, а затем имя пользователя. Имя бота можно изменить позже, а вот над именем пользователя следует хорошо подумать.

Готово! Вы получите токен для подключения вашего Telegram-бота к платформе мессенджер-маркетинга.

Создание Telegram-бота через BotFather

Чтобы отвечать на сообщения, отправленные боту Telegram, нужно подключить вашего Telegram-бота к платформе мессенджер-маркетинга. Попробуйте потренироваться на бесплатном периоде в аккаунте textback.ru.

Несмотря на то, что пользователи регистрируются в Telegram с помощью номера телефона, основным идентификатором каждого пользователя является его ID. Мессенджер Telegram не передает номер телефона или ID через Telegram-бота в вашу CRM для обмена сообщениями. Только имя.

Это означает, что пользователи Telegram не могут быть импортированы через CSV в CRM как контакты. Поэтому общаться и отправлять рассылки можно только в Telegram-боте и только подписчикам — тем пользователям, кто запустил бота. Поэтому отправить рассылку по номеру телефона — нельзя. Для реактивации базы больше подходит WhatsApp Business API, подробнее читайте здесь.

Сервисы, которые разрешают отправлять рассылки по номеру телефона в Telegram, используют «серое» подключение. А это значит — высокий риск блокировки аккаунта, особенно при подключении только что зарегистрированного номера в Telegram.

Как собрать подписчиков в Telegram-бота

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

Еще по теме:  Fcc буст микрофон для Телеграмм

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

2. QR-коды. В отличие от ссылок, их можно использовать офлайн, например, в физических магазинах. Как и ссылки на чат, QR-коды будут работать только при установленном приложении. QR-коды можно сделать с помощью любого генератора QR-кодов, используя ссылку t.me.

3. Виджет подписки на сайте. Это кнопки, которые при нажатии ведут пользователя к вам в мессенджер. Такие кнопки могут появляться не сразу, а через некоторое время на сайте, либо когда пользователь хочет покинуть страницу. Инструкция по настройке виджета подписки »

Виджет подписки на сайте

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

Виджет чата на сайте

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

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

Источник: vc.ru

Пишем свой канал-бот для Telegram как у Хабра на Python

Пишем свой канал-бот для Telegram как у Хабра на Python

2016-06-06 в 11:05, admin , рубрики: configparser, logging, python, rss, sqlalchemy, telegram, Программирование

Недавно ко мне обратился друг с просьбой написать бота, импортирующего новости из RSS-канала на сайте в Telegram-канал. Огромнейшим плюсом данного способа оповещения являются push-уведомления, которые приходят каждому подписанному пользователю на его устройство. Уже давно хотелось заняться чем-то подобным. Недолго думая, в качестве образца я выбрал канал Хабра telegram.me/habr_ru. В качестве языка программирования был выбран Python.

В итоге, мне надо было решить следующие проблемы:

  1. Парсинг RSS.
  2. Одним из условий был отложенный постинг сообщений (если после того, как новость была выложена, в течение n часов её скрыли/удалили/переименовали, то она не должна быть опубликована, вместо нее отправляется оповещение о корректной новости)
  3. Постинг сообщений в телеграм.
  4. Сокращение целевой ссылки с помощью сервиса bit.ly

От себя добавил еще:

  1. Ведение логов с помощью библиотеки (logging).
  2. Обработка конфига (configparser).

1. Отложенный постинг сообщений

Для решения данной проблемы было принято решение использовать SQLite базу данных. Для работы с БД использовалась библиотека SQLalchemy.

Структура до банального проста — всего одна таблица. Код объекта представлен ниже:

Для хранения текстовой информации и ссылок использется base64, форматом хранения даты-времени был выбран Unix Timestamp.

Обработка данных сессии осуществляется отдельным классом.

Base = declarative_base() class database: «»» Класс для обработки сессии SQLAlchemy. Также включает в себя минимальный набор методов, вызываемых в управляющем классе. Названия методов говорящие. «»» def __init__(self, obj): engine = create_engine(obj, echo=False) Session = sessionmaker(bind=engine) self.session = Session() def add_news(self, news): self.session.add(news) self.session.commit() def get_post_without_message_id(self): return self.session.query(News).filter(and_(News.message_id == 0, News.publish<=int(time.mktime(time.localtime())))).all() def update(self, link, chat, msg_id): self.session.query(News).filter_by(link = link).update(<«chat_id»:chat, «message_id»:msg_id>) self.session.commit() def find_link(self,link): if self.session.query(News).filter_by(link = link).first(): return True else: return False

Еще по теме:  Найти все сот сети через ссылку на ТГ

При обнаружении новости, она добавляется в базу. Сразу же задается время публикации.

Для обнаружения новостей готовых к публикации используется метод get_post_withwithout_message_id . Фактически, мы выбираем из базы все посты, у которых message_id=0 и дата публикации меньше текущего времени.

Для проверки на новизну отправляем запрос базе данных на факт содержания ссылки на новость (метод find_link ).

Метод update служит для обновления данных, после публикации новости в канале.

2. Парсинг RSS

Стоит признаться, что писать свой RSS парсер совсем не хотелось, поэтому в бой вступила библиотека feedparser.

import feedparser class source(object): def __init__(self, link): self.link = link self.news = [] self.refresh() def refresh(self): data = feedparser.parse(sв качествеelf.link) self.news = [News(binascii.b2a_base64(i[‘title’].encode()).decode(), binascii.b2a_base64(i[‘link’].encode()).decode(), int(time.mktime(i[‘published_parsed’]))) for i in data[‘entries’]]

Код до смешного прост. При вызове метода refresh с помощью генератора формируется список объектов класса News из последних 30 размещенных постов в rss ленте.

3. Сокращение ссылок

Как упоминалось выше, в качестве сервиса был выбран bit.ly. API не вызвает лишних вопросов.

class bitly: def __init__(self,access_token): self.access_token = access_token def short_link(self, long_link): url = ‘https://api-ssl.bitly.com/v3/shorten?access_token=%sformat=json’ % (self.access_token, long_link) try: return json.loads(urllib.request.urlopen(url).read().decode(‘utf8’))[‘data’][‘url’] except: return long_link

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

4. Управляющий класс

class export_bot: def __init__(self): config = configparser.ConfigParser() config.read(‘./config’) log_file = config[‘Export_params’][‘log_file’] self.pub_pause = int(config[‘Export_params’][‘pub_pause’]) self.delay_between_messages = int(config[‘Export_params’][‘delay_between_messages’]) logging.basicConfig(format = u’%(filename)s[LINE:%(lineno)d]# %(levelname)-8s [%(asctime)s] %(message)s’,level = logging.INFO, filename = u’%s’%log_file) self.db = database(config[‘Database’][‘Path’]) self.src = source(config[‘RSS’][‘link’]) self.chat_id = config[‘Telegram’][‘chat’] bot_access_token = config[‘Telegram’][‘access_token’] self.bot = telegram.Bot(token=bot_access_token) self.bit_ly = bitly(config[‘Bitly’][‘access_token’]) def detect(self): #получаем 30 последних постов из rss-канала self.src.refresh() news = self.src.news news.reverse() #Проверяем на наличие в базе ссылки на новость. Если нет, то добавляем в базу данных с #отложенной публикацией for i in news: if not self.db.find_link(i.link): now = int(time.mktime(time.localtime())) i.publish = now + self.pub_pause logging.info( u’Detect news: %s’ % i) self.db.add_news(i) def public_posts(self): #Получаем 30 последних записей из rss канала и новости из БД, у которых message_id=0 posts_from_db = self.db.get_post_without_message_id() self.src.refresh() line = [i for i in self.src.news] #Выбор пересечний этих списков for_publishing = list(set(line) %s;’ % (post, message_id)) time.sleep(self.delay_between_messages)

При инциализации с помощью библиотеки configparser считываем наш конфиг-файл и настраиваем логгирование.

Чтобы детектировать новости, используем метод detect . Получаем последние 30 опубликованных постов, поочередно проверяем наличие ссылки в базе данных.

Перед публикацией, необходимо проверить наличие постов, выгруженных из базы данных в rss-канале. В этом нам помогут множества. И после этого уже публикуем новость с помощью библиотеки telegram. Её функционал довольно широк и ориентирован на написание ботов. После публикации необходимо обновить message_id и chat_id .

В итоге получаем:

image

Стоит отметить то, что если переписать класс rss, то так же можно будет импортировать новости из других источников (VK, facebook и т.д.).

Источник: www.pvsm.ru

Создаем Telegram бота на Python часть-1

Создаем Telegram бота на Python часть-1

10.09.2019

11511

Рейтинг: 5 . Проголосовало: 7
Вы проголосовали:
Для голосования нужно авторизироваться

advertisement advertisement

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

Еще по теме:  Как создать свой Телеграмм канал видео

Часть 1: Регистрация нового Telegram Bot-а

advertisement advertisement

После начала общения с этим ботом, нажав /start, вы получите ответ от бота с указанием его возможностей. Нас интересует создание нового бота — /newbot.

После того как мы введем /newbot нас попросят придумать имя для нашего нового бота. Пусть оно будет MyFirstTestBot.

Далее нам нужно придумать юзернэйм для нашего бота. В нашем случае это будет mft001_bot.

После этого BotFather высылает нам специальный токен:

Наш токен оказался: 851216368:AAG6_JHHsIqAK-lX2CxOWQHTAM109zdrcZM (В вашем случае токен будет другой.)

Этот токен понадобится нам при настройке нашего бота. Токен должен быть сохранён. Именно он является единственным ключем для взаимодействия с ботом.

Также мы получаем ссылку на нашего бота. В моем случае это t.me/mft001_bot.

Теперь наш Tekegram-бот создан. Мы можем начать настраивать своего бота, например, установить изображение для бота, изменить или добавить описание бота и тп.

Тема связана со специальностями:

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

Часть 2 Написание кода

Как и написано выше мы будем создавать нашего бота на языке Python. Установите его с официального сайта, если вы используете Windows или выполните команду в терминале на Linux:

sudo apt-get install python python-pip

Далее воспользуемся системой управления пакетами PIP, которая используется для установки и управления программными пакетами, и установим библиотеку PyTelegramBotAPI (Telebot):

pip install pytelegrambotapi – user

Создадим логику работы нашего бота. Используя полноценный IDE или простой текстовый редактор создадим файл ourbot.py и заполним его необходимой логикой.

Для начала нам нужно выполнить импорт библиотеки PyTelegramBotAPI (Telebot), написав в нашем файле:

import telebot
Далее подключим нашего бота, используя полученный ранее токен:
bot = telebot.TeleBot(‘851216368:AAG6_JHHsIqAK-lX2CxOWQHTAM109zdrcZM’)

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

Возможности PyTelegramBotAPI позволяют отправлять боту аудио (content_types=[‘audio’), видео (content_types=[‘video’), документы (content_types=[‘document’), текст (content_types=[‘text’), географический адрес (content_types=[‘location’), данные контакта (content_types=[‘contact’) и стикеры (content_types=[‘sticker’). Мы, для простоты опыта, будем общаться с ботом только текстом:

def handle_text_messages(message):

Теперь рассмотрим логику обработки наших текстовых сообщений. Мы хотим захардкодить простое общение бота с пользователем: бот должен уметь здороваться, когда с ним здороваются, уметь отвечать на вопросы «Кто ты?», «Как тебя зовут?» и «Что ты умеешь?».

Видео курсы по схожей тематике:

Kodu Game Lab

CoffeeScript

Статические методы в интерфейсах

Статические методы в интерфейсах

if message.text == «Привет»:
bot.send_message(message.from_user.id, «Привет»)
elif message.text == «Кто ты?»:
bot.send_message(message.from_user.id, «Я тестовый чатбот для учебного примера.»)
elif message.text == «Как тебя зовут?»:
bot.send_message(message.from_user.id, «Меня зовут MyFirstTestBot.»)
elif message.text == «Что ты умеешь?»:

bot.send_message(message.from_user.id, «Я умею отвечать на несколько простых вопросов — кто я, как меня зовут и что я умею делать.»)

bot.send_message(message.from_user.id, «Я тебя не понимаю. Напиши что-то другое.»)

После тела метода, обрабатывающего наши запросы к боту, добавим вызов метода:

bot.polling(none_stop=True, interval=0)

Задачей этого метода является создание потока, в котором бот отправляет запросы на сервер, уточняя таким способом, не писал ли ему кто-то сообщение. Параметр none_stop: False означает, что наша программа будет продолжать отправлять запросы на сервер после получения сообщения об ошибке от сервера Telegram.

Сохраним наш код:

Рейтинг
( Пока оценок нет )
Загрузка ...