Api токен Телеграмм канала

Заикнулся в присутствии нового коллеги о своем блоге, первый его вопрос был “что за блог?”, а второй “а телеграм канал у тебя есть?”. Поймал себя на мысли неужели я стал ретроградом. Когда начался хайп вокруг влогов и Youtube каналов я остался верен теплому ламповому формату текстовых статей, так и сейчас, считаю что нет необходимости иметь свой Telegram канал, но задача меня заинтересовала.

Вокруг Telegram ботов сейчас много шумихи, как завести своего бота или канал написано в официальной документации. Не хотелось делать что-то надуманное, только ради “попробовать” и я решил что более менее полезной задачей будет уведомление о новых статьях в этом же блоге и только потом понял, что в принципе, мою реализацию можно использовать для любой RSS ленты c небольшими правками под себя.

Обзор

  • Вступление
  • Наивная реализация или тупой бот
  • Используем простую БД или чуть более умный бот
  • Прикручиваем РСУБД или умеренно сообразительный бот
  • Заключение

Наивная реализация или тупой бот

Первое что нужно сделать это создать бота и получить API токен.

СОЗДАНИЕ ЧАТ БОТА В ТЕЛЕГРАМ 2021 БЕСПЛАТНО | API TOKEN TELEGRAM

Недолго думая, я взял самую популярную либу-обертку для ботов Telegram — gem telegram-bot-ruby и наваял следующий код:

Что же тут происходит? Все очень просто, вот здесь:

require ‘rss’ require ‘telegram/bot’

подключаем библиотеки для работы с RSS и Telegram, а вот здесь:

token = ENV[‘TELEGRAM_BOT_API_KEY’]

Здесь я использую переменные окружения (Environment variables), чтобы это работало, перед запуском скрипта нужно выполнить в командной строке export TELEGRAM_BOT_API_KEY=123456789 , где вместо 123456789 нужно вставить собственно токен. Использование переменных окружения один из двенадцати факторов приложения согласно — Adam Wiggins

Затем, с помощью строчки:

rss = RSS::Parser.parse(‘https://doam.ru/feed.xml’, false)

сохраняем в объект rss всю RSS ленту моего блога (я точно знаю что у меня там только 10 записей, поэтому не боюсь никаких переполнений или задержек).

После этого мы создаем бот клиента, обходим каждый item внутри rss и отправляем его ссылку в канал Telegram.

Таким образом, при каждом запуске скрипта в канал будет отправляться 10 сообщений с одинаковыми ссылками. Я использую бота, хотя для такого же функционала, например, в Slack я бы использовал Incoming Hooks.

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

На этом этапе я понял что нужно хранить состояние постов, т.е. запоминать информацию какие записи уже отправлены в канал, а какие еще нет.

Используем простую БД или чуть более умный бот

На самом деле новая версия бота растянулась на 55 строк кода, и вот он целиком:

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

require ‘telegram/bot’ require ‘rss’ require ‘sdbm’ require ‘json’ require ‘logger’

Я использую теже две библиотеки что и раньше rss и telegram , затем подключаю sdbm это встроенная либа Ruby, которая предоставляет простое хранилище типа ключ-значение (key-value), в качестве ключей или значений могут выступать только строки. Далее я подключаю json , чтобы легко кодировать объекты в строки и декодировать обратно. И еще одной библиотекой является logger , который предоставляет простой способ для отладки.

Еще по теме:  Блокировка Телеграмм канала на Айфоне

logger = Logger.new(STDOUT) if ENV[‘TELEGRAM_BOT_API_KEY’].nil? logger.fatal «Environment variable TELEGRAM_BOT_API_KEY not set!» exit 1 else token = ENV[‘TELEGRAM_BOT_API_KEY’] end rss = RSS::Parser.parse(‘https://doam.ru/feed.xml’, false)

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

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

Парсинг RSS ленты происходит таким же образом как и ранее.

SDBM.open ‘doam_posts.db’ do |posts|

Далее, этой строчкой мы открываем нашу базу данных, которая является просто файлами в нашей файловой системе, в случае если базы не существует она будет создана с нуля.

rss.items.each do |item| key = item.link.href title = item.title.content published = item.published.content # next if posts[key] if posts.has_key?(key) logger.info «Post exist in DB will not rewrite» else posts[key] = JSON.dump( title: title, published: published, sended: 0 ) end end

И после этого мы начинаем первый цикл: обходим все полученные rss итемы, записываем ссылки, заголовок и дату публикации соответственно в переменные key, title и published. Проверяем есть ли в нашей базе ключ с таким же значением как наш и если есть просто выводим в лог текст, что не будем ничего перезаписывать (это нужно только на этапе отладки, но вообще не обязательно), в обратном случае, если в базе нет записи с таким ключом мы генерируем json строку и записываем её в базу. В качестве ключа я выбрал URL, так как они обеспечивают уникальность, всегда написаны в одном регистре и латиницей.

Следующим шагом я создаю объект типа Hash и прохожусь по всем записям которые есть в базе. С помощью hash[k] = JSON.parse(v) я делаю парсинг строки значения и создаю вложенные хеши. Затем проверяю значение поля sended , если там 0 то генерирую текст и отправляю его в канал, после чего перезаписываю объект cо значением 1, чтобы не отправить эту же запись при следующем запуске.

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

Теперь уже я решил попробовать задеплоить мой код на Heroku и выполнить его там. С использоавнием раннера задач все получилось, да только вот Heroku не сохраняет файлы между запусками задачи (да и вообще). Так что мое решение с SDBM является быстрым и простым, но может быть использовано только как selfhosted.

Прикручиваем РСУБД или умеренно сообразительный бот

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

Здесь проделывается точно такая же работа: иницилизируются необходимые компоннеты, синхронизируется rss лента и локальная база данных и отправляются ссылки на записи которые числятся в базе как “неотправленные”. Только в качестве базы используется PostgreSQL и все это обернуто в класс и методы. Метод initialize выполняется при вызове метода new на объекте класса DoamTelegramBot , остальные методы нужно вызывать отдельно. И чтобы выполнить всё правильно, я создал каталог bin в который положил файл с именем doam_bot и содержимым:

Еще по теме:  Добавить случайных людей в Телеграм людей

В котором я указываю что для выполнения скрипта нужно использовать язык Ruby, подключаю созданный мной класс через файл app.rb , создаю объект telegram и передаю в него урл для парсинга и id канала, вызываю методы sync и send . После чего я заливаю код на Heroku и создаю периодическую задачу, например раз в сутки. И если за сутки появились новые записи то в мой канал придет уведомление, уже без моего содействия в автоматическом режиме.

Заключение

Полностью это маленькое приложение можно посмотреть у меня в gitlab (для этого нужно залогиниться в gitlab.com). Лицензия пока не указана, но она MIT, т.е. можете править и использовать в своих целях. Если будет время я хотел бы прикрутить еще несколько функций, например отправку не только в телеграм но и другие сервисы, а также решить проблему первого запуска, когда база наполняется новыми записями с флагом “не отправлено” но неизвестно точно какие записи уже были отправлены в канал. В любом случае готов рассмотреть ваши Merge Requests.

  • Поблагодарить автора
  • Telegram канал

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

Подключение Telegram (личный бот)

Полное описание всех команд и возможностей нашего авторского Telegram-бота, а также полный список команд, которые Telegram-бот будет принимать в письменном виде от пользователя, вы можете найти здесь:

Подробная инструкция:

Нажимаем ЗАПУСТИТЬ. После появится приветственное сообщение с возможностями.

Необходимо создать нового. Для этого нажимаем на ссылку “/newbot”

Теперь вводим имя для своего бота, для примера введем «Moontrader». После нажимаем Enter. Далее появится сообщение о том, что надо ввести «пользовательское имя» которое будет оканчиваться на “_bot”. Напишем для примера “mt01_alert_bot”, потом в поиске можно найти своего бота по данному пользовательскому имени.

Обязательно запишите Token, он выделен на скриншоте.

Пример: 1926660510:AAGw8XPYC2YVX7SaFWwN88BFhBv-tpyDr2A

! — Token это API ключ к Вашему боту, не показывайте его никому.

Далее в Telegram из главного окна, открываем снова поиск и пишем

Выбираем его для открытия чата.

Далее внизу ЗАПУСТИТЬ. На данном этапе, окно чата можно закрыть.

Теперь необходимо создать канал, в который мы добавим нашего бота. Для этого в Telegram сверху нажимаем «три полоски» меню, потом «Создать канал».

Вводим название, для примера напишем “MoonTrader — Alert”, далее СОЗДАТЬ.

По желанию выбираем тип канала, для примера выберем Частный канал. Нажимаем СОХРАНИТЬ.

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

При добавлении предложит назначить Администратором, соглашаемся.

Даем права на “Добавление администраторов”. После нажимаем СОХРАНИТЬ.

Теперь необходимо добавить второго бота для идентификации ID канала.

В окне созданного канала заходим в меню “три точки” и выбираем Управление каналом.

Переходим в раздел “Администраторы” и нажимаем ДОБАВИТЬ АДМИНИСТРАТОРА.

Также включаем возможность “Добавления администраторов” и нажимаем СОХРАНИТЬ.

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

В ответ на сообщение бот пришлет ID канала. В данном примере -1001552213809. Сохраняем его. Знак минус в начале обязателен!

Теперь мы можем полученные данные указать в клиенте MoonTrader, для этого заходим в меню и выбираем раздел Core profile —> Telegram integration.

В открывшемся разделе нам необходимо поставить 2 галочки на пункты Telegram enabled и Use custom bot.

Далее необходимо заполнить поля:

  1. Telegram bot token — это Token который нам выдал «BotFather» при создании нового бота, в нашем случае это 1926660510:AAGw8XPYC2YVX7SaFWwN88BFhBv-tpyDr2A
  2. Telegram chat id — это ID нашего канала, которое мы узнали через «IDBot», в нашем случае это -1001552213809
Еще по теме:  Вы часто удаляли и создавали свой аккаунт заново Телеграмм

И выбрать тип присылаемых уведомлений:

  1. Send order filled — оповещение об открытии ордера (начало сделки).
  2. Send notifications — оповещение о результате сделки (окончание сделки).
  3. Send performance alerts — оповещения о превышении лимитов нагрузки на сервере.

После всех настроек, для сохранения нажимаем ОК. Обязательно после сохранения настроек в клиенте — перезагрузите ядро и клиент!

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

Инструкция для подключения встроенного бота Т1000 — перейти

Источник: docs.moontrader.com

Отслеживайте и модерируйте комментарии в Телеграм

как включить комментарии в telegram

В LiveDune теперь можно обрабатывать комментарии в одном окне сразу из четырех соцсетей и одного мессенджера: Инстаграм*, Фейсбук*, ВКонтакте, Одноклассники и Телеграм. Чтобы модерировать комментарии из Телеграм, необходимо выполнить несколько пошаговых настроек.

Как добавить Телеграм-канал в модуль «Мониторинг»

Телеграм-канал ― это блог в мессенджере, где администратор канала публикует новости (сообщения) для подписчиков.

Канал в Телеграм может быть:

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

В LiveDune можно добавить только публичные Телеграм-каналы.
Инструкция по добавлению Телеграм-канала в LiveDune
Шаг

Перед тем, как добавить канал в модуль «Мониторинг», нужно подключить обсуждения, чтобы пользователи могли оставлять комментарии под постами. Для этого необходимо создать группу, которая будет привязана к вашему каналу. Чтобы это сделать, нажмите на название канала ― три точки ― «Управление каналом». Найдите пункт «Обсуждения» и нажмите «Добавить группу» ― «Создать группу».

комментарии в телеграм

как включить комментарии в телеграм

как в телеграм канале включить комментарии

Название группы подтянется автоматически: имя вашего канала + Chat. При желании вы можете изменить название. В эту группу будут падать все комментарии, которые пользователи будут оставлять под публикациями в канале. После создания группы она автоматически появится в пункте «Обсуждение».

Шаг

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

Придумайте имя и ник для вашего бота. Ник должен заканчиваться на bot — это правило мессенджера, чтобы отличать ботов от пользователей. Рекомендуем использовать одинаковое имя и ник, чтобы не запутаться.

Например, наш канал «Жизнь Дюны» имеет ссылку https://t.me/jiznduny ― ее и будем использовать для бота. Вставляем JiznDuny и добавляем приставку Bot, получаем JiznDunyBot ― это будет имя и ник нашего будущего бота, отправляем его в первом и втором сообщении.

После этого BotFather создаст вашего бота и пришлёт вам токен. Токен — это специальный ключ, через который LiveDune будет получать комментарии. Сохраните его, он потребуется дальше.

Теперь нужно добавить созданного вами бота в администраторы канала и группы (чат, который мы создали для обсуждений на первом шаге). То есть мы добавим JiznDunyBot в админы группы «Жизнь Дюны Chat» и канала «Жизнь Дюны». Для этого перейдите в «Управление группой/каналом» и выберите пункт «Администраторы». В поиске найдете вашего бота и добавьте его. Выдайте права, как показано на скриншоте ниже и нажмите «Сохранить».

Источник: livedune.com

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