скачивать истории с инстаграмма телеграмм бот
Телеграм бот скачает любое видео из любого источника
Всем привет!
Сегодня я с вами поделюсь телеграм ботом «Gozilla» (клик), с помощью которого можно скачать любое видео из инстаграма, ютуба, вк и некоторых других соцсетей
Первым делом выбираем язык. Ну тут всё понятно.
Далее нам показывают небольшую инструкцию о том, как пользоваться данным ботом
Я, недолго думая, зашел к одному гениальному человеку в профиль инстаграм и взял оттуда ссылку на последний его видеоролик
Сбросил ссылку боту и выбрал «Видео»
После чего сразу началась обработка запроса. Как я понял, обработка происходит только тогда, когда контент (в нашем примере — видео) запрашивается у бота впервые
Видео скачалось быстро.
Также я проверил ютуб. С ютуба тоже всё прекрасно скачивается
Кстати, в боте есть настройки качества видео, обязательно зайдите туда и поставьте «высокое», потому что изначально там стоит «среднее»
Благодарю за внимание!
youtube-dl тоже недурен. Это программка такая. Качает и видео и аудио с кучи источников
Качает не в мр3 а в м4а, как то можно его научить мр3?
Команды в телеграм ботах
В ботах часто используются команды вида “/command”, которые провоцируют бота на то или иное действие.
Кто уже создавал ботов мог видеть их в @botfather.
Давайте разберемся как создать этот список команд и присвоить каждой ту или иную функцию.
С созданием списка команд все довольно просто, это реализуется непосредственно в настройках бота через @BotFather:
1) Вводим команду /mybots
2) Видим список наших ботов
3) Выбираем тот бот, которому присвоим список команд
4) Кликаем Edit Bot
5) Кликаем Edit Commands
Далее, следуя формату, отправляем список команд, например:
Теперь если мы введем “/” в чате с нашим ботом, то он предложит список команд. Проверяем, что список есть:
Добавим логику нашим командам
Как уже видно из описания команд, я хочу отправить в чат клавиатуру.
Создам новую ГТ и перейду к написанию скрипта
Назову файл doPost, здесь будет только эта функция
Добавлю следующий скрипт:
let update = JSON.parse(e.postData.contents);
let msg = update.message;
let msg_array = msg.text.split(» «);
let user = msg.from.username;
if (text == «/getkeyboard») <
Demo.send_key(«Галочки», chat_id, API, keyboard)
Demo.send(«Клавиатура сохранена”, chat_id, API)
Все! Для каждой команды теперь добавлен функционал.
Хорошо, расскажу поподробнее))
Итак, если текст сообщения == “/getkeyboard”, мы отправляем в чат некую клавиатуру.
Если мы отправили боту команду “/save”, то он ответит нам сообщением “Клавиатура сохранена”.
Подробно функции send и send_key, а также библиотека Demo рассматривались в постах ранее. Вот ссылки:
Дабы не перегружать дорогого читателя инфой, остановлюсь здесь)
Как всегда жду фидбека и вопросиков ^^ Всегда рады пообщаться!
Типы клавиатур в чат ботах
Сегодня познакомимся с существующими клавиатурами в ботах и тем, как их подключить и настроить.
Всего есть два типа клавиатур:
ReplyKeyboardMarkup используется в случаях, когда вы хотите получить от пользователя конкретный ответ, предоставляя ему возможность не печатать ручками, а выбрать из предлагаемых вариантов. Иными словами, это заготовки текстовых сообщений. Расположены кнопки под полем ввода сообщения
В зависимости от выбранной кнопки могут последовать те или иные действия. Эту логику мы задаем в скрипте для каждой кнопки.
В приведенном примере мы хотим записать пользователя на маникюр и предлагаем ему определиться с днем (в качестве примера приведены только два варианта, но это можно закастомить).
После выбора того или иного дня бот внесет инфу в ГТ, а именно: дату, имя пользователя и ид чата.
Запись через чат имеет следующий вид
Здесь мы выбрали кнопку Сегодня и получили ответ от бота.
В ГТ при этом появилась строчка
Подключение и настройка
Каждая клава (инлайн-клавиатур может быть сколько угодно) записана в соответствующую переменную:
[«Записаться», «Отменить запись»]
Обратите внимание, что синтаксис для инлайн (INLINE_Days) и обычной (KEYBOARD) клавиатур различается.
Клавиатурам можно добавить дополнительные свойства, мы использовали только resize_keyboard со значением true. Их не так много и они есть в документации телеграма.
Далее в коде обращаемся к клавам по имени переменной.
С ReplyKeyboardMarkup все достаточно просто. Она добавляется при первом прогоне скрипта, когда вы отправляете в чат команду /start, например.
Нам нужна функция, которая отправит в чат клавиатуру. Функция та же, что и при отправке сообщения ботом send(), за двумя исключениями:
Ниже скрипт функции отправки обычной клавы в чат:
function send_key (msg, chat_id, api, keyboard)
Вызов функции осуществляется из тела функции doPost(e) одной строкой:
send_key(«Поехали», chat_id, API_TOKEN, KEYBOARD)
Что касается инлайн-клавиатур.
Отправка клавиатуры наступает при определенном условии. Если пользователь отправил в чат слово “Записаться”, то отправляем ему нашу инлайн-клаву:
if (text == «Записаться») <
Demo.send_key(«Выберите день», chat_id, API_TOKEN, INLINE_Days)
Переменная text содержит текст сообщения, которое мы и проверяем на соответствие.
Результатом выполнения функции send_key будет сообщение от бота Выберите день и кнопки под ним.
Далее нужно предусмотреть алгоритм обработки нажатия этих кнопок.
Если мы кликаем на какую-либо из кнопок (“Сегодня” или «Завтра»), то добавляем новую строку в ГТ и отправляем сообщение в чат, что запись создана.
let date = Demo.getNewDate(0);
let ind = get_ind(chat_id);
Demo.send(«Вы успешно записались. «+»Дата визита: «+ date, chat_id, API_TOKEN);
Ниже скрипт полностью (не забываем, что значения глобальных переменных у вас будут свои):
// Объявляем все нужные нам переменные. Док важно открывать именно по ID, а не брать активный док, т.к. запуск кода будет производить бот
const API_TOKEN = «1946675042:AAHg1HTHe42GhR9EEt0EdbR94j1G8pDcTWE«;
const DOC = SpreadsheetApp.openById(«1ALJLtLdt-LT7GEF4hawIizVeJXFnoPZCsC0pw7kcp70«);
const Clients = DOC.getSheetByName(«Clients»);
const Calendar = DOC.getSheetByName(«Calendar»);
var update = JSON.parse(e.postData.contents);
var msg = update.message;
var msg_array = msg.text.split(» «);
var user = msg.from.username;
if (text == «Записаться») <
Demo.send_key(«Выберите день», chat_id, API_TOKEN, INLINE_Days)
if (text == «Отменить запись») <
let ind = get_ind(chat_id);
Demo.send(«Запись отменена», chat_id, API_TOKEN)
var text = update.callback_query.message.text;
var user_name = update.callback_query.from.username;
let date = Demo.getNewDate(0);
let ind = get_ind(chat_id);
Demo.send(«Вы успешно записались. «+»Дата визита: «+ date, chat_id, API_TOKEN);
let date = Demo.getNewDate(1);
let ind = get_ind(chat_id);
Demo.send(«Вы успешно записались. «+»Дата визита: «+ date, chat_id, API_TOKEN);
Отдельно ниже представлена доп функция, которая проверяет наличие ид в ГТ. Если ид уже есть в таблице, мы обновляем данные у строки с этим ид. В противном случае создаем новую строку.
let chat_id = 311157431;
let arr = Clients.getRange(1,2,Clients.getLastRow()).getValues()
let ind = arr.indexOf(chat_id)
ID для подключения библиотеки Demo: 1JkXEW_zfhr6v0TKsvU_ZbygNLpXEczxZcC46fMF_ffk-noMk8UKcMitz
Здесь также заметим, что клик по кнопке в инлайн клавиатуре отправляет боту JSON со свойством callback_query. Это значит, что нам нужны дополнительные переменные, в которые мы запишем значения из этого JSON пакета.
Это краткая вводная в мир клавиатур. Скоро будут посты про простые сервисы, куда будут добавлены и доработаны те же клавиатуры и доп функции.
Чат с прогнозом погоды и триггеры в гугл таблицах (GS6)
Глобально задача в следующем:
Отсюда я забрал прогноз:
Подробнее о том как спарсить данные с сайта в таблицу в этом посте: Парсинг данных с сайтов в гугл таблички (GS1)
Тут приведу только формулу:
Для этого нам необходимо сохранять ид чата отдельно в таблице и обращаться к этому значению как к значению переменной chat_id.
Соответственно, нам нужна функция, которая будет это делать:
//записывает ид чата в таблицу
Demo.send(«ID записан», chat_id, API_TOKEN);
Вызывать ее мы будем из тела функции doPost(e) при условии, что боту отправлена команда /link. В коде это выглядит вот так:
Теперь соберем все вместе и сформируем сообщение для отправки в чат.
Все, что в кавычках, должно быть изменено на ваши значения.
Функция для подключения веб хука:
Функция link(chat_id) для запоминания id чата
Функция daily() для формирования и отправки прогноза в чат:
На данный момент функция daily() не вызывается другой функцией или командой типа /link или /hello.
Мы добавим триггер, который будет вызывать функцию автоматически каждое утро.
Переходим на вкладку Triggers
Добавляем новый триггер
В окне задаем необходимые параметры.
Результат работы скрипта ниже.
Дополнительно: триггеры на то и триггеры, что работают автономно (без участия пользователя или разработчика, с закрытым доком или чатом. В любой ситуации сообщение будет отправлено в чат в установленное время с установленной частотой.
Создание библиотеки в гугл скриптах
В Гугл скриптах, как и в других языках программирования, есть возможность использовать библиотеки.
Что такое библиотека? Это набор функций и методов, которые часто используются программистами в разных программах. Чтобы не создавать одну и ту же функцию дважды или больше раз, достаточно один раз сохранить ее в библиотеку и подключать библиотеку к новому коду с уже написанными стандартными функциями.
В посте про создание телеграм бота мы использовали только три функции, и эти функции стандартные для любого бота. Следовательно, чтобы при создании второго, третьего… десятого бота не переписывать эти функции снова и снова, давайте просто сохраним их в библиотеку.
Создаем новые ГТ и скрипт в ней
Пропишем функцию send(msg, chat_id) :
function send (msg, chat_id, api) <
//Отправляет сообщения в тлг. На вход функции дать сообщение и ID чата, в который нужно провести отправку
UrlFetchApp.fetch(‘https://api.telegram.org/bot’ + api + ‘/’, data);
Сохраняем проект и делаем деплой
Кликаем по шестеренке и выбираем Library
Кликаем Deploy внизу окна и видим ссылку на библиотеку
Создаем новые гугл таблицу и скрипт. В скрипте прописываем глобальные переменные
Помним, что значения этих переменных у вас будут свои.
Попробуем добавить тот же функционал, что и в посте про создание бота, с отправкой сообщения в чат телеграма. Но в этот раз мы не будем создавать функцию send(), а подключим библиотеку, в которой она уже есть.
В открывшемся окне вставляем ID библиотеки (не ссылку, а ид) и кликаем Look up
Если подключение библиотеки прошло успешно, в окне появятся дополнительные поля выбора версии и указания идентификатора.
Название идентификатора меняем на короткое и понятное и кликаем Add.
В результате в списке библиотек видим новую библиотеку
Напоминаю, что в библиотеке у нас 1 функция. К ней можно обратиться следующим образом: имяБиблиотеки.имяФункции
Когда вы прописываете имя библиотеки и ставите точку, вы видите список всех доступных функций. В нашем случае это только функция send. Выбираем ее и прописываем передаваемые параметры:
Demo.send(«Hello World», chat_id, API_TOKEN)
Сохраняем проект, кликаем Deploy, обновляем Api_link, выполняем функцию api_connector и идем тестить работу этого бота (этот алгоритм действий также подробнее описан в статье про создания бота).
Новый бот отправляет сообщение в чат с помощью функции, которая зашита в библиотеке.
Таким образом, в ту же библиотеку можно добавить ряд стандартных функций и к новым скриптам подключать уже написанные функции, не создавая их снова.
Комбинация из ТЛГ и ГТ, простота подключения КМК делает из ГТ офигенный инструмент автоматизации.
Пост ориентирован прежде всего на людей, которые только познают ГТ и на первых порах не требует знания гугл скриптов. В этом посте будет только первичная настройка и подключение. В следующих постах рассмотрю всё что описал выше (как трекать время, задачи, финансы и т.д. и как это настроить под себя).
Для начала находим отца всех ботов @botfather в телеге.
После старта бота botftaher выведет список команд. Здесь нам интересна команда создания нового бота /newbot.
Порядок очень простой: создать бота, назвать его человеческим языком, задать ему username. В результате получаем API токен нашего бота (1860347610:AAH1q6eqTPnVh0qe6mQWidNSTELcprXEfOk). Он-то нам и нужен.
Должно получиться вот это:
Затираем дефолтный код и вставляем следующий скрипт:
const API_TOKEN = ‘1860347610:AAH1q6eqTPnVh0qe6mQWidNSTELcprXEfOk‘
const DOC = SpreadsheetApp.openById(‘10W0T9eOP_NN_6g4qyEJzWjm4nkKRN2vyUOnpx73f-N0’);
var update = JSON.parse(e.postData.contents);
//нам нужен только тип «сообщение»
var msg = update.message;
var msg_array = msg.text.split(» «);
var user = msg.from.username;
if (msg_array[0] == «/hello») <
send(«Hello World», chat_id)
function send (msg, chat_id) <
//Отправляет сообщения в тлг. На вход функции дать сообщение и ID чата, в который нужно провести отправку
UrlFetchApp.fetch(‘https://api.telegram.org/bot’ + API_TOKEN + ‘/’, data);
Обращаем внимание на переменные DOC и API_TOKEN (выделено жирным). Значения переменных необходимо исправить на ваши значения.
1) меняем ID гугл таблицы (находится в строке адреса после /d/)
2) меняем токен бота, который мы получили при его создании выше
Круто! Львиная доля работы уже проделана.
Следующим важным моментом является регистрация вебхука (webhook).
Добавим следующий код к нашему скрипту:
Сохраняем наш код и кликаем Deploy.
В открывшемся окне кликаем по шестеренке и выбираем Web app
В поле Who has access выбираем Anyone
При первом запуске приложение попросит авторизации. Проделываем это упражнение.
Здесь нам нужен URL в самом конце. Копируем его и вставляем в качестве значения переменной App_link.
Теперь функция должна выглядеть следующим образом:
Снова сохраняем код и запускаем функцию api_connector:
И наконец переходим к боту в телеге! Запускаем, отправляем команду /hello и видим результат.
Теперь подробно по коду. В коде всего 3 функции:
В нашем случае, если мы отправляем команду /hello, бот отвечает Hello World, вызывая функцию send. Это все его действия.
Делюсь своим погодным ботом без уведомлений
Последние полгода в свободное время писал погодного бота.
Возможно, бот будет полезен на устройствах с небольшим количеством памяти.
Основная идея была в том чтобы бот не присылал ни одного уведомления,
вместо этого он обновляет сообщения с прогнозом.
Интересно ваше мнение, предложения, критика.
Ключевые особенности бота:
✅ Присылает 3 сообщения с погодой (на 7 дней, сегодня, сейчас)
✅ Редактирует сообщения («7 дней» и «сегодня» раз в сутки; «сейчас»: каждый час)
✅ В любой момент можно отправить название города,
бот пришлет погоду в этом городе
✅ Если населенных пунктов с таким названием несколько,
бот пришлет варианты с мини картой на выбор
✅ Можно создать виджет на рабочем столе
Так выглядит прогноз:
🪁- ветер и его направление
Себе добавил вот такой удобный виджет.
Работает как на Android так и на iOS.
1) Долгий тап по пустому месту на рабочем столе
2) Появляются доп. настройки
3) Нажать «виджеты», найти раздел «Telegram»
4) Выбрать виджет 4×2
5) В настройках виджета выбрать чат с ботом
Благодарю за внимание!
Ps: готов к критике, отзывам, улучшениям
Можно также писать на почту: weatherisbot@gmail.com
Дописал бота для скачивания с Youtube, Instagram, Spotify, SoundCloud и тд
Недавно дописал бота, который был у меня в долгом ящике, надеюсь будет кому-то полезен
Бот может скачивать:
1️⃣Видосы из TikTok(без ватермарок).
2️⃣Посты, стори, IGTV, Reels с Instagram.
3️⃣Плейлисты, Shorts, видео(до 10 часов) с Youtube.
4️⃣Треки, плейлисты, альбомы, лайки по профилю SoundCloud.
5️⃣Треки, плейлисты, альбомы YouTubeMusic и Spotify.
6️⃣Голосовые сообщения, стикеры, видеосообщения Telegram.
Буду рад любому фидбеку\предложению\пожеланию\(может даже багу)
Список для добавления в бота(по запросу пользователей):
1. Выбор качества, и формата скачивания с ютуба
2. Скачивание с ВК
3. Скачивание с сервисов Яндекса
4. Скачивание Торрентов
5. Скачивание с Пикабу
6. Скачивание с Реддита
7. Предлагайте своё
Бот (гусь) в телеграмм, который мониторит цены на акции
Привет! Расскажу вам про своего telegram бота, которого я недавно сделал.
Зовут его Инвест Гусь 🦢. Он своевременно оповестит тебя, когда цена акции достигнет заданного значения. Это поможет заходить в сделку в максимально подходящий момент, а так же вовремя фиксировать прибыль или убытки.
Задачей было сделать инструмент, который поможет максимально быстро и удобно создавать новые оповещения, а так же легко управлять их списком. Я пробовал искать других ботов, которые могли бы делать что-то похожее, но к сожалению выбор был небольшой и по функционалу они решали немного другие задачи.
Пуши из приложенек тоже не зашли, как минимум потому что я их всегда выключаю, иначе завалят «супер выгодными предложениями только сегодня».
Как создать оповещение
— Запустить сценарий добавления через команду /add
— Добавить оповещение одной командой /add yndx 5000 (yndx — тикер ценной бумаги, 5000 — цена на которой придет уведомление)
— Так же можно добавлять несколько оповещений одной командой, перечисляя цены через пробел, а так же цены могут ставиться через +/- относительно текущей цены
* Если добавить один алерт, то бот предложит добавить к нему комментарий. Это может быть полезно, когда есть какая-то отложенная стратегия по акции.
Все фичи можно найти по команде /help
Сейчас у меня есть довольно большой бэклог для новых фичей, которые хочется внедрить, по этому буду рад фидбеку, который мне помог бы расставить приоритеты и понять, что важнее для пользователей.
Так же будет интересно, если вы поделитесь другими инструментами, которые используете для получения оповещений.
1. Котировки берутся пока что только у Тинькофф Инвестиций
2. Крипта скорее всего появится позже
Новый тест TelegramTV бота
Доброго времени суток.
Появилось немного свободного времени. И я решил посвятить это время своему хобби. «Говнокодингу». Уверен так назовут мой код, гуру.
А именно доработкой своего TelegramTV бота: @t_tv_bot (текущая версия)
Что я сделал в новой версии на данный момент:
— Взял за основу базы каналов всем нам известный сервис iPTV, чье имя нельзя произносить в слух. Более 1000 каналов.
— Добавил возможность подгрузить весь список каналов по команде /playlist
— Добавил возможность посмотреть список доступных групп каналов по команде /groups
— Добавил возможность подгрузить список каналов только нужной группы
— Добавил поиск нужного канала в базе по названию
Ссылка на тестовый TelegramTV bot: @ttvdemo_bot
Приглашаю всех протестить мое творение и высказать свои мнения.
По ограничениям на данный момент.
Я крайней степени бич. Поэтому на данный момент использую только один временный аккаунт базы, поэтому возможно возможность просмотра будет ограничена из-за занятости аккаунта. пробуйте открыть нужный канал через какое-то время.
Ссылки на потоки во время теста временные, поэтому копировать, воровать и прочее бесполезно. Не тратьте время.
С нетерпением жду комментарии
«И экономия должна быть экономной»
Родительского комитета чАД
Начался учебный год. Родители побывали на первых родительских собраниях. И понеслась! Эти родительские чаты просто разрывает новыми сообщениями. Не важно во сколько и когда. Ранним утром в воскресение или около полуночи в среду. Вечером едешь с работы, открываешь мессенджер. 15 новых сообщений. 42 новых сообщения. 232 новых сообщения.
Кто-то забил и даже не смотрит. А кому то совесть не позволяет. Вдруг там важное сообщение об экскурсии или прививках. И ты сидишь и листаешь эту километровую простыню. Сообщения все единообразны до безобразия. И так весь учебный год. Каждый будничный день! (кто-то там даже рекламу своих услуг размещает).
Как пример, в Телеге:
Создаешь частный канал (1) и группу (2), привязанную к нему (3).
В частный канал добавлены все родители, родительский комитет и учитель. Писать там сообщения могут только администраторы (например учитель и родительский комитет), у обычных родителей эта функция отключена. В канале размещаются только важные информационные сообщения. Для родителей в этом канале есть кнопка «обсудить», которая перекидывает их в привязанную группу, где возможности писать сообщения есть у всех.
Также и в канале и в группе есть прекрасная функция опрос (4), в которой можно сформулировать вопрос и определить варианты ответа. В итоге принятие решения по занавескам или подарку учителю проходят в удобной и цивилизованной форме. Решение принимается по принципу большинства. Демократия!
Плюс есть тот же функционал, что и в других менеджерах. Закрепить сообщение (5). Отключить уведомления (6) и т.п.
В итоге родители получают два чата:
Пропадает необходимость каждый день пролистывать километры неважных сообщений, а с опцией » опрос» принять коллегиальное решение становится намного проще.
p.s. и еще один лайфхак (касается первоклашек): чтобы каждый день в родительской флудильне не задавались вопросы «Девочки, подскажите что задали на завтра, а то мой не успел записать«, один раз договоритесь с классным руководителем, что она в официальном чате, каждый день будет скидывать фотку с заданием с доски. Кто-то скажет, что дети сами должны учится записывать д/з. Согласен. Но ничто не мешает учителю слать это родителям «по тихому», чтобы дети не знали.
Тариф День Рождения от РЖД или как экономить от 40% до 80% на билеты Сапсан. Личный опыт.
В начале этого года я столкнулся с проблемой найти среди своих коллег человека, кто был бы не против воспользоваться Сапсаном и в нужные мне даты съездить со мной в Москву из СПб и обратно (или только в одну сторону). Мне было важно найти не просто попутчика, а пассажира, чья дата рождения совпадала или лежала в интервале 14 дней с предполагаемой датой моей поездки для того, чтобы мы могли вмести купить в кассе РЖД билеты на поезд Сапсан со скидкой в 50% для каждого. Я не смог осуществить задуманное, но задумался, что если бы я не ограничивался стенами офиса, то мог бы купить билет со скидкой и поехать с кем-то еще, возможно, даже с незнакомым мне человеком.
После этого я создал бота в Телеграм T.me/Allo812Bot, который помогает регулярно пользоваться льготным тарифом «День рождения» для проезда в поездах «Сапсан».
T.me/Allo812Bot ищет людей, которые могут применить тариф День Рождения от РЖД и помогает найти пассажиров-попутчиков, чтобы купить билет со скидкой от 60% до 80%.
С его помощью можно также найти пассажира-именинника и каждый раз при покупке билетов на скоростной поезд Сапсан экономить 40% от их общей стоимости
(см. раздел Правила в T.me/Allo812Bot).
Одна из решенных технических проблем
После блокировки Телеграм в апреле встал вопрос, как технически организовать оплату, потому что SberbankPaymentBot, платежный бот Яндекс.Касса, иностранные платежные сервисы не позволяли подключить эквайринг к боту в Телеграм. Последовательно осуществлялись попытки подключить каждую из них. Одновременно придумал альтернативное техническое решение, которое позволяет принимать платежи пользователей, сохранив эквайринг от Сбербанк. Я изучал опыт других каналов и ботов, мое решение по приему платежей оказалось в чем-то техническим ноу-хаю в текущей ситуации с блокировкой.
Я хочу узнать мнение у аудитории Pikabu на мой сервис, хочу предложить вам присоединиться к нему T.me/Allo812Bot и пополнить таким образом сообщество (сейчас оно n-тысяч), чтобы каждый мог регулярно экономить деньги и планировать поездки по маршрутам следования Сапсанов.
Если у вас есть идеи или советы, как правильно продвигать этот бот онлайн/оффлайн, мне будет тоже интересно это услышать. Спасибо