Бот в Телеграм для данных инстаграм

Хочу поделиться результатом своей работы, разработка Telegram бота для массфолловинга в Instagram.

Скорее всего, некоторые из вас не знакомы с таким термином, вот небольшое описание:

Массфолловинг — массовая подписка на людей по определённым критериям.
Простым языком, вы подписываетесь на человека, он видит в ленте, что на него кто-то подписался, переходит к вам на страницу.

На этом цель данного инструмента для бизнеса выполнена.

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

Мне стало интересно, я зарегистрировался на одном из популярных сервисов, посмотрел функционал, он мне показался интересным, пользовался я им некоторое время.

Перенос данных из инстаграма в другую соцсеть. Телеграм бот


Стоит сказать, что в тот момент Telegram представил платформу Bot Platform, она резко набрало популярность, много разработчиков пытались что-то сделать на основе него, в том числе и я, в частности использовал для отправки уведомлений с сайтов.

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

Решение было простым, почему бы не написать Telegram бота, с помощью которого можно добавлять аккаунты, создавать задачи для подписок и отписок, и получать оповещение непосредственно в мессенджер о завершение задачи?!

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

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

Начал разработку на Node.js, для хранения данных использовал MongoDB.

Основные возможности, которые я хотел написать были:

  • Создание заданий (Подписка или Отписка)
    В этом разделе пользователь выбирает аккаунт, для которого нужно совершить действие, далее выбирает тип задача (подписка или отписка), после чего указывает источник (пользователя, хэштег или локацию), далее общее количество подписок, количество действий в день и лайков каждому пользователю.
  • Активность
    Пользователь в этом разделе может выбрать аккаунт, и посмотреть активную задачу, в каком статусе она, сколько осталось до завершения, так же редактирование задачи и отмена задачи.
  • Аккаунты
    Добавление Instagram аккаунтов

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

Схема для хранения id пользователей telegram, для их идентификации:

const UserSchema = new db.mongoose.Schema(< id: < type: Number, required: [true, ‘idRequired’] >, name: < type: String, required: [true, ‘nameRequired’] >, date: < type: Date, default: Date.now > >)

Схема для хранения аккаунтов Instagram:

const AccountSchema = new db.mongoose.Schema(< user: < type: Number, required: [true, ‘userRequired’] >, login: < type: String, required: [true, ‘loginRequired’] >, password: < type: String, required: [true, ‘passwordRequired’] >, verified: < type: Boolean, default: false >, date: < type: Date, default: Date.now > >)

А так же схема для поставленых задач:

const TaskSchema = new db.mongoose.Schema(< user: < type: Number, required: [true, ‘userRequired’] >, login: < type: String, required: [true, ‘loginRequired’] >, type: < type: String, required: [true, ‘typeRequired’] >, params: < type: Object, required: [true, ‘paramsRequired’] >, status: < type: String, default: ‘active’ >, date: < type: Date, default: Date.now >, start: < type: Number, required: [true, ‘startReqiured’] > >)

В свойстве params мы храним специфичные конкретной задаче данные, например для подписки:

sourceType Типа источника (пользователь, хештег, локация)
source наименование источника (username, #хештег, [lat, long])
actionFollow общее количество подписок/отписок
actionFollowDay количество действий в день
actionLikeDay количество лайков каждому пользователю

Остальные схемы доступны в репозитории проекта instalator-telegram.

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

Карта проекта

Карта содержит в себе объекты «события», в нем есть свойство event, которая содержит имя события EventEmitter, а так же свойство children, которая содержит в себе дочерние «роуты», по структуре соответствующие.

Как это работает, пользователь отправляет команду, например Создать задание, получив сообщение, проходимся по дереву, если есть свойство, вызываем соответствующее событие EventEmitter, после чего записываем id пользователя в объект state, где будем хранить текущее расположение пользователей, например:

Еще по теме:  Лучшие Телеграмм каналы для развития

state = < 23445432: [‘Создать задание’, ‘Лайк + Подписка’], 1345532: [‘Активность’] >

Теперь если пользователь под id 23445432 отправит сообщение, в ответ будет вызвано событие task:select:follow+like, а что если соответствующего сообщения нет в карте? или нам нужно получить какие-то данные от пользователя, которые не прописаны в карте, например количество подписок в день? Для этого одно из свойств children необходимо пометить звездочкой, вот так: *, далее внутри него описываем event, который необходимо вызвать.

Непосредственно сам «роутинг»:

const router = msg => < // Декодируем эмодзи if (msg.text) msg.text = emoji.decode(msg.text) // No user status, we give the main menu if (!state[msg.from.id]) < commandEvents.emit(‘/home’, msg) // Adding the user to the state state[msg.from.id] = [] > else < // Go to the desired branch const findBranch = state[msg.from.id].reduce((path, item) => < // If there are no child partitions if (!path.children) < return path > else < if (path.children[item]) < return path.children[item] > else < // If there is no suitable branch, then we try to use a common branch if (path.children[‘*’]) < return path.children[‘*’] > else < return path > > > >, map) // Call branch method const callBranch = branch => < const action = findBranch.children[branch] // Call action event.emit(action.event, msg, action, (value = msg.text) => < event.emit(‘location:next’, msg, action, value) >) > // We check the existence of the method if (findBranch.children.hasOwnProperty(msg.text)) < callBranch(msg.text) >else if (findBranch.children[‘*’]) < // If there is no suitable branch, then we try to use a common branch callBranch(‘*’) > else < // back event.emit(‘location:back’, msg) > > >

Если свойства в карте нет, то мы вызываем ивент back, возвращаем пользователя на один шаг выше.

Рассказывать подробно о том, как устроены обработчики не имеет смысла, это обычные callback функции, которые изменяют те или иные данные в базе данных, для примера приведу обработчик отправки списка аккаунтов пользователю:

event.on(‘account:list’, async (msg, action, next) => < try < const list = await Account.list(msg.from.id) if (list === null) < throw new Error(`There are no accounts for $ `) > // Sending the list of accounts const elements = list.map(item => item.login) send.keyboard(msg.from.id, ‘Выберите аккаунт’, [ . elements, ‘Добавить аккаунт’, ‘Назад’ ]) next next() > catch (e) < event.emit(‘account:empty’, msg) next next() > >)

Метод next() переводит пользователя на следующий уровень в карте, для этого он добавляет активный раздел в state, а метод keyboard отправляет кнопки пользователю.

Далее если вы заметили, в схеме Task у нас есть свойство start, в которое записывается минута, в которую создается задача, так вот пора запускать задачи, для этого мы перебираем все задачи созданные в текущую минуту, полный код работы «cron’a»:

cron.js

Для работы с Telegram я настроил webhook, если вам пока он не нужен, можете запустить в режиме dev (npm run dev).

Рекомендую настроить webook, так ваш сервер не будет все время посылать polling запросы, конфигурация находится в файле conf.json.

И наверное последнее, это работа с приватным API Instagram, ее нет смысла рассматривать, документация доступна с примерами ве репозитории проекта.

Ну и наконец пример рабочего функционала:

Хочется сказать, что все таки есть проблемы, они связаны с тем, что Instagram блокирует и не дает разрешения для авторизации большего количества аккаунтов с одного IP адреса какого-нибудь VPS. Так в моем случае авторизоваться смог с нескольких аккаунтов, далее уже доступ был блокирован для добавление новых, но добавленные ранее не имели никаких проблем, если конечно не нарушать дневные лимиты.

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

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

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

Будьте осторожны используя бота! Специально для вас добавил раздел «Лимиты», где написана некоторая информация, которая предостережёт вас от блокировки со стороны Instagram.

Важно! пароли хранятся в не зашифрованном виде, не вводите свой пароль!

Post Views: 985

Разработка собственного торгового бота для криптовалюты В этой статье (а, скорее, даже – рассказе) я хочу поделиться с вами личным опытом создания программы-бота для работы на криптовалютной…

Как регламентировать перекуры в течение рабочего дня? Можно ли разрешать опаздывать к началу рабочего дня? Можно ли чатится во время…

Использование Telegram Core API (MTProto) на PHP Эта заметка не про Bot API, а про Core API Telegram, с помощью которого можно создавать полноценные клиенты для месседжера,…

Еще по теме:  Как отключить тихий режим в Телеграмме

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

Автопостинг в Telegram — как настроить отложенный постинг в Telegram и перенос контента из Instagram и ВК

Чтобы не потерять свою целевую аудиторию, нужно расширят присутствие в Сети — создавать каналы в Телеграме и активно их развивать. И если до этого вы в основном развивались ВКонтакте или Инстаграме*, то контент оттуда можно просто перенести в новый канал Телеграма. Так не нужно все копировать и публиковать заново. В статье расскажем о том, как переносить контент на канал из соцсетей и как автоматизировать работу в принципе с помощью автопостинга и отложенного постинга.

Как перенести контент из ВКонтакте и Инстаграм*

Начнем с переноса уже готового контента из группы ВКонтакте или профиля Инстаграм*. Для этого существует немало сервисов и ботов — мы рассмотрим лучшие.

Это бот, который может перенести контент из RSS-ленты, из ВКонтакте, Инстаграма*, Твиттера, Фейсбука* и Ютуба. Чтобы добавить любую запись, достаточно отправить ее урл — бот покажет вид ссылок, которые ему нужно отправить. Когда отправите ссылку, в ответ получите сообщение с тем, как будет выглядеть публикация. Если все в порядке, просто нажмите «Добавить». После бот попросит добавить его администратором в канал, чтобы он смог публиковать записи — первую он опубликует в течение полутора часа.

Стоимость: бот полностью бесплатный, но работать можно только с 25 источниками.

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

Стоимость: бот является частично бесплатным. Бесплатно можно подключать один источник к одному каналу. Если их больше, то придется оплачивать 100 руб ежемесячно.

Амплифер
Официальный сайт: amplifr.com

Удобная платформа для кросспостинга, помогает создавать полноценные посты для соцсетей и мессенджеров. Но также у сервиса есть возможность копировать старые посты из RSS-лент. Ленту ВКонтакте можно сконвертировать в формат RSS, чтобы перенести все старые публикации — вот ссылка на инструмент для этого. Для работы нужно зарегистрироваться и создать своего бота в Телеграм.

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

Стоимость: сервис довольно дорогостоящий — в зависимости от выбора, тариф будет стоить 10-500 долларов в месяц. Есть триал-версия, чтобы бесплатно попробовать инструменты сервиса — длится семь дней.

Onemorepost
Официальный сайт: Onemorepost.ru

Онлайн-сервис, который может репостить новые и старые записи из ВКонтакте, Инстаграм*, Фейсбук*, Одноклассников, Твиттера, Тамблера и даже Пинтереста. Достаточно зарегистрироваться по почте, а затем настроить перенос записей. Для этого нужна ссылка на группу или профиль ВКонтакте или другой соцсети, а также уникальный токен собственного бота. Бота нужно добавить в администраторы канала в Телеграм. В процессе настройки можно отметить, какие записи публиковать — старые или новые.

Стоимость: сервис условно бесплатный — дает три дня бесплатного использования, после этого придется оплатить подписку. Месячная подписка стоит 200 руб, на полгода — 1080 руб, на год — 2040 руб.

SmmBox
Официальный сайт: smmbox.com

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

Стоимость: тарифов в SmmBox три — стартовый за 150 руб в месяц, Про за 300 руб в месяц, Вип за 500 руб в месяц и Бизнес за 1 000 руб в месяц. Есть бесплатный период.

Telegaposter
Ссылка на скачивание: zennolab.com

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

Стоимость: программа стоит $45 за лайт-версию и $90 за фулл-версию. За эту плату вы получаете вечную лицензию.

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

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

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

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

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

Controller Bot
Официальный сайт: controller.bot

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

Smmplanner
Официальный сайт: smmplanner.com

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

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

Стоимость: стоимость тарифа зависит от количества социальных страниц — есть план и за $5, есть и за $150.

Channely
Официальный сайт: channely.co

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

Стоимость: стоимость тарифа на месяц 199 руб, на полгода — 169 руб, а на одиннадцать месяцев — 149 руб. Есть бесплатный период на 21 день.

Postmypost
Официальный сайт: postmypost.io

Сервис позволяет автоматизировать постинг не только в Телеграм, но и Вконтакте, Фейсбук*, Инстаграм*, ТикТок, Одноклассниках и в других платформах. Кроме того, он может собирать все комментарии и сообщения из разных соцсетей и мессенджеров — можно ответить прямо с сервиса.

Стоимость: есть бесплатный тариф на 7 дней — для его оформления не нужна карта. Платные тарифы — это Стандартный за 452 руб, Премиальный за 505 руб, Продвинутый за 558 руб.

RePublic
Официальный сайт: re-pub.me

Позволяет автоматизировать работу в Телеграм, Вконтакте и Одноклассниках. Для использования достаточно указать все свои группы и источники, из которых будет интегрироваться контент. Есть возможность отложенного постинга в дополнение к обычному, а также функция «Автопилота» для полной автоматизации публикации и продвижения. Кроме того, здесь можно и продвигать контент самостоятельно — это делается через взаимные репосты с другими пользователями.

Стоимость: после регистрации дается три дня на бесплатное использование, затем придется оплачивать тариф — Промо за 99 руб, Старт за 400 руб и Стандарт за 800 руб.

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

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

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

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

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

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

Pur Ninja — сервис помогает одновременно работать с публикациями в Телеграм, Инстаграм*, Фейсбук*, Вконтакте, Твиттере, Одноклассниках и других. Есть возможность создавать посты для каждой соцсети и следить за их показателями и датами публикаций в календаре. Также можно импортировать записи из таблиц и RSS-лент. Плюс сервиса в том, что он индивидуально адаптирует посты под конкретную платформу, чтобы части информации не терялись.

Стоимость: есть бесплатный тестовый период на семь дней. Стоимость тарифов стартует от $11.

NovaPress — это известная кросспостинговая платформа, которая объединяет публикацию контента в Телеграм, Одноклассниках, Вконтакте, Инстаграм*, Фейсбук*, Твиттере и других. Есть удобный визуальный календарь, чтобы видеть, какие посты будут публиковаться, когда и где. Если есть сайт с новостями, то можно публиковать свежие новости с него в соцсетях и мессенджерах. Также необычная фича сервиса — это добавление вотермарок на фото с названием канала или сообщества.

Стоимость: тариф стоит от 150 рублей в месяц, есть бесплатный период на 10 дней.

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