Кк смотреть отложки телегрм

Отложенный постинг в Телеграмм

Отложенный постинг в Телеграмм — это то, что существенно облегчает жизнь администраторам каналов! Принципы и секреты постинга по расписанию в Telegram!

Мессенджер вызывает всё больший интерес у пользователей, платформа растет, развивается и наполняется новыми каналами и группами. Пользователи охотно заводят и ведут по несколько каналов одновременно; когда число пабликов переваливает за второй десяток, встает вопрос, как организовать работу.

Что такое отложенный постинг

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

Возможность будет интересна:

  1. Пользователям Телеграмм с большим количеством каналов и/или ежедневных публикаций
  2. Администраторам, которые не имеют постоянного доступа к интернету или мессенджеру.
  3. Админам, привыкшим к жесткому планированию.

Как сделать отложенный пост в Телеграмме

На первом этапе надо создать бота в Телеграмм, для этого никаких специальных навыков не потребуется — только умение нажимать кнопки и придумывать названия:

Как смотреть трансляции в телеграм

BotFather в ответном сообщении поздравит с созданием нового робота и сообщит его token, который надо скопировать.

Следующий этап – сделать созданного бота администратором канала Телеграмм:

  • Пользователь должен открыть канал и кликнуть по названию паблика.
  • Нажать значок шестеренок.

Следующий этап – сделать созданного бота администратором канала Телеграмм:

  • Пользователь должен открыть канал и кликнуть по названию паблика.
  • Нажать значок шестеренок.

  • Выбрать пункт «Администраторы»
  • Нажать «Добавить администратора».
  • Ввести в поиске название или имя созданного бота и нажать галочку.

Теперь предстоит подключить бота и канал к Controller Bot:

  1. Надо отправить команду /add
  2. Нажать кнопку «Подключить бота».
  3. Отправить сообщение с token, который был скопирован из чата с BotFather.

На этом настройка закончена. Теперь можно воспользоваться услугой отложенный постинг:

Еще по теме:  Висят сообщения в Телеграмме

  • Нажать кнопку «Далее». Если кнопки нет на экране, пользователю стоит выйти из диалога и зайти снова, либо набрать текстом «Далее» и отправить.
  • Тапнуть «Отложить».
  • Выбрать срок, на который требуется отложить публикацию.
  • В сообщении выслать время публикации двумя цифрами, разделенными пробелом (в соответствии с регионом, который был выбран в Controller Bot). Если постинг отложен на другую дату, тогда пользователю надо написать через пробел цифрами: час, минуты, число, месяц. Например, для поста 19 января в 18:40 надо отправить сообщение с текстом: «18 40 19 01».
  • Заниматься своими делами – постинг появиться в паблике в нужный момент от имени канала.

Controller Bot позволяет в Телеграмм не только устанавливать дату и время публикации, но и добавлять до 6 реакций эмодзи, прикреплять URL-кнопки и просматривать статистику.

Источник: smm-blogs.ru

Экономим свое время. Ускоряем создание отложенных постов в Telegram с помощью бота

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

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

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

  1. Открыть канал
  2. Создать пост
  3. Выбрать тип публикации «Отложенная»
  4. Указать время поста
  5. Отправить публикацию

При фиксированном интервале между постами алгоритм напрашивается на оптимизацию, в идеале хотелось бы оставить только пункты 1, 2, 5. Причем пункт 2 прокачать до «Создать посты».

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

Звучит здорово, но этот подход не сработал из-за того, что боту недоступно это самое время последнего поста в канале, а также из-за этого:

Дуров, почему?

Получается без собственной реализации отложки не обойтись.

Идея

У любого файла, загруженного на сервера Telegram, есть уникальный fileId. Если мы отправим боту фотографию, то он сможет достать этот id из входящего сообщения и сохранить в базу:

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

В случае картинки на серверах создается несколько файлов в разном разрешении

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

Создаем проект

Бота будем писать на Java с использованием Spring Boot и библиотеки TelegramBots,. В качестве БД используем PostgreSQL. На Spring Initializr сгенерируем наш проект с необходимыми зависимостями:

Откроем сгенерированный проект в IDE. В build.gradle в тег dependencies добавим библиотеку для работы с ботами:

implementation ‘org.telegram:telegrambots-spring-boot-starter:5.5.0’

Далее настроим подключение к нашей локальной БД. Для этого в application.yaml пропишем:

spring: datasource: url: $

И создадим класс конфигурации БД:

databaseChangeLog: — changeSet: id: 1-add-record author: ananac changes: — createTable: tableName: record columns: — column: name: id type: bigint constraints: primaryKey: true nullable: false — column: name: file_id type: varchar(255) constraints: nullable: true — column: name: comment type: text constraints: nullable: true — column: name: data_type type: varchar(15) constraints: nullable: false — column: name: create_date_time type: timestamp constraints: nullable: false — column: name: post_date_time type: timestamp constraints: nullable: true — column: name: author type: varchar(255) constraints: nullable: false
databaseChangeLog: — include: file: db/changelog/1-add-record.yaml

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

Создаем бота

telegram: name: botname token: 1793090787:AaaaAAAAAAAAAAAAAAAAAAAAAAAaaaaaaaa chatId: -1948372984327 adminId: 265765765

Пишем логику

Реализуем сущность для созданной нами таблицы:

И JPA-репозиторий с необходимыми нам запросами:

Займемся непосредственно обработчиком входящих сообщений. Создаем новый класс, отнаследованный от TelegramLongPollingBot . В нем определяем метод, который будет обрабатывать входящие события. Мы хотим, чтобы с ботом мог работать только пользователь указанный в конфиге, поэтому добавим проверку по userId:

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

Еще по теме:  Сделать пост в Телеграмм со скрытым окончанием чтобы продолжение было после подписки

private void processMessage(Message message) < Long chatId = message.getChatId(); if (message.getPhoto() != null !message.getPhoto().isEmpty()) < Record record = buildRecord(message); recordRepository.save(record); reply(chatId, «Добавлено. Количество постов в отложке: » + recordRepository.getNumberOfScheduledPosts()); >else < reply(chatId, «Принимаются только фото»); >> private Record buildRecord(Message message) < Record record = new Record(); String fileId = getLargestFileId(message); record.setFileId(fileId); record.setComment(message.getCaption()); record.setDataType(«PHOTO»); record.setId(message.getMessageId()); record.setCreateDateTime(LocalDateTime.now()); record.setAuthor(message.getFrom().getUserName()); return record; >private String getLargestFileId(Message message)

Метод запускается раз в минуту и первым делаем проверяет есть ли в БД неопубликованные посты. Если посты есть, то проверяется не прошло ли 120 минут с момента публикации последнего поста и на основании этого принимается решении о постинге. Также учитываем, что при первом запуске у нас не будет опубликованных постов в БД.

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

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

private void processMessage(Message message) < Long chatId = message.getChatId(); if (message.getPhoto() != null !message.getPhoto().isEmpty()) < Record record = buildRecord(message); recordRepository.save(record); reply(chatId, «Добавлено. Количество постов в отложке: » + recordRepository.getNumberOfScheduledPosts()); >else if (message.getText() != null) < switch (message.getText()) < case «/info»: < reply(chatId, «Количество постов в отложке: » + recordRepository.getNumberOfScheduledPosts()); break; >case «/clear»: < reply(chatId, «Чтобы очистить напиши /delete»); break; >case «/delete»: < recordRepository.clear(); reply(chatId, «Очищено. Количество постов в отложке: » + recordRepository.getNumberOfScheduledPosts()); break; >default: < break; >> > else < reply(chatId, «Принимаются только фото»); >> public void sendPhoto(Record record) < try < SendPhoto sendPhoto = new SendPhoto(); sendPhoto.setChatId(chatId); sendPhoto.setPhoto(new InputFile(record.getFileId())); execute(sendPhoto); afterPost(record); >catch (TelegramApiException e) < e.printStackTrace(); >> private void afterPost(Record record)

Запуск и проверка

Поднимаем приложение и проверяем:

Посты удаляются и добавляются

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

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

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