Бот для Telegram
В Telegram с 24 июня 2015 появились боты, а точнее Telegram Bot API. То есть, теперь мою прошлую задачу получения статуса сервера можно решить гораздо удобнее.
Бот не является “пользовательским аккаунтом”, ему не нужен номер телефона, и самое главное — не нужно ставить клиентское приложение для Telegram на сервере или где вы хотите его использовать. Бот для Telegram — это ну как бы и есть API — веб-запросы к серверам Telegram. Механизм обработки запросов и отправки ответов лежит на вас, как на владельце бота.
Официальная документация по ботам здесь: https://core.telegram.org/bots
Создание бота
Нужно написать самому главному боту — BotFather:
…и уважительно попросить создать нового бота:
После этого бот будет создан. Обратите внимание на токен — по нему осуществляется доступ к боту, так что светить этот токен нельзя, иначе кто угодно сможет получить доступ к сообщениям бота (перехватывать запросы и отправлять свои ответы).
Сейчас, когда у вас уже создан бот и получен токен, я могу на примере продемонстрировать, что конкретно имел в виду под словами “это ну как бы и есть API”. Откройте браузер и перейдите по такому адресу:
В браузере отобразится примерно такое:
Для большей наглядности, вот скриншот браузера:
Вот что такое бот в Telegram. Вы отправляете веб-запрос и получаете на него JSON-ответ.
Разумеется, нам нужно автоматизировать как отправку запросов, так и разбор JSON-ответов, потому нужна программная реализация бота, которая будет работать на каком-нибудь сервере (можно и на домашнем компе, но тогда, очевидно, бот будет доступен только когда будет включен компьютер). И для этой цели можно выбрать абсолютно любой язык программирования, поддерживающий отправку веб-запросов, ведь, как я уже сказал и продемонстировал — работа с ботом это всего лишь отправка веб-запросов и разбор ответов.
Реализация бота
Я выбрал язык Python. Выбор далеко не случаен. Дело в том, что для Python уже есть готовая библиотека, существенно облегчающая реализацию бота — это pyTelegramBotAPI. Собственно, в ней сделано уже всё, что требуется для отправки веб-запросов и получения ответов, вам остаётся только описать команды, которые ваш бот будет уметь выполнять. Однако, какое-то понимание всё же потребуется, потому настоятельно рекомендую изучить документацию по API: https://core.telegram.org/bots/api
Итак, вам нужно поставить Python и какую-нибудь IDE (хотя, конечно, можно и в Блокноте). Вот что у меня:
Итак, у вас установлен Python и pip, ставим pyTelegramBotAPI:
Теперь создаём файл someTestBot.py , в котором и будет описан функционал бота. Я определил две обязательных команды /start и /help , а также команду отправки статуса сервера /server (забегая вперёд, она предназначена для запуска в Linux, так что при тестировании на Windows её вызов зафейлится):
Скрипт сбора информации о статусе сервера status.sh я взял из прошлой статьи и немного изменил:
Его надо поместить на сервере по пути /root/scrps/status.sh , либо каком другом, но тогда надо не забыть изменить его и в исходниках бота.
На этом реализация бота закончена.
Возвращаемся к BotFather, указываем ему команды, которые знает бот:
Размещение и запуск бота на сервере
Ну, во-первых, вы уже можете запустить бота у себя на компьютере — нужно открыть командную строку в том каталоге, где лежит someTestBot.py , и выполнить python someTestBot.py . Если это Windows, появится “чёрное окно”, которое будет означать, что бот уже работает. Найдите в Telegram пользователя @someTestBot (у вас своё имя, очевидно), и можно уже с ним переписываться:
Как я и говорил, команду /server в Windows он обработать не смог, и пойманное исключение записалось в журнал.
Кстати, обратите внимание — приложение показывает подсказки о всех командах бота, которые мы добавили через BotFather:
Теперь задача, как сделать так, чтобы бот работал постоянно. Идём на сервер с Linux, создаём каталог /usr/local/bin/someTestBot/ , кладём в него наш someTestBot.py . Кстати, на сервере тоже должен быть установлен pyTelegramBotAPI (разумеется, Python и pip тоже).
Я расскажу о двух способах, как запустить скрипт в качестве сервиса: Supervisor и systemd .
Supervisor
Создаём конфиг для процесса ( /etc/supervisor/conf.d/someTestBot.conf ):
С таким конфигом, надо полагать, бот будет “выполняться” с root правами, что некруто. Скорее всего, можно задать, с какими правами это будет работать. Ну да ладно, нам же надо скорее в продакшн, так что запускаем:
systemd
А можно ничего и не устанавливать, если в системе используется systemd .
С таким содержанием:
В User=someTestBot можно и root указать, но я рекомендовал бы создать под это отдельного юзера. Правда, тогда чтобы работали скрипты, надо будет дать этому пользователю доступ к mysqladmin .
Включаем нашу только что созданную службу:
Ну всё, бот работает, проверяем:
Тестового бота @someTestBot, используемого для статьи, я удалил. Если кто-то в будущем займёт этот юзернейм, то это не я.
Что ещё можно сделать? Ну, вот эта строка — bot.polling() — в общем-то, означает бесконечно выполняющийся цикл запросов к серверам Telegram, что не очень правильно в плане потребления ресурсов на обеих сторонах. Лучше сделать так, чтобы приложение бота ожидало сообщения от Telegram. Это можно сделать, реализовав webhook. Когда доберусь до этого, дополню статью.
Наконец-то запилил инструкцию на webhook. Решил не добавлять здесь, а запостить новую статью.
Как сделать, чтобы на VDS Телеграм бот работал постоянно?
Приветствую! Впервые заливаю бота на сервер, в связи с чем столкнулся с некоторыми проблемами. Для тех кто уже это делал вопросы могут показаться лёгкими, но для меня, увы, пока непонятно! Прошу помочь, а вопросы следующие:
1) Как сделать чтобы бот работал постоянно/круглосуточно + автоматически запускался после краша?
(Сейчас использую PuTTY, как я понял после запуска бота из консоли, в случае закрытия этой самой консоли бот тоже остановится?)
2)Как запускать одновременно на одном серваке несколько ботов, чтобы не было конфликтов между ними.
(Слышал про cmd-команду «screen» для создания виртуальной сессии, а также про systemd, это оно, копать в эту сторону?
3)Webhook предпочтительнее longpolling при одновременной работе нескольких ботов или не суть?
З.Ы. Хост — Fornex; Админка — Vesta; ОС — Debian 9; Терминал клиент — PuTTY; FTP клиент — WinSCP
Как сделать так, чтобы бот работал постоянно?
Что нужно сделать, чтобы бот работал на постоянке, даже если я выключал бы свой пк/посоветуйте какие нибудь сервисы,если такие знаете.
Для этого нужно использовать любой из существующих хостингов. Например google cloud, если ваш бот не большой. В противном случае придется пользоваться платными хостингами.
Я воспользовался сервисом https://www.pythonanywhere.com там все бесплатно и понятно. Регистрируешься, затем добавляешь файлы с ботом в раздел Files и после запускаешь.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Telegram бот без явного использования сервера
Сегодня на примере двух простых ботов для телеграм я хочу показать возможность реализации функций без использования сервера.
Для этого можно воспользоваться так называемыми бессерверными вычислениями, например
Я буду использовать сервис от яндекса.
Стоит отметить что все эти сервисы платные, но цена рассчитывается от количества вызовов функции, времени выполнения и потребляемой оперативной памяти. В любом случае, при использовании этих функций в личных целях, стоимость будет намного ниже даже самого дешевого VPS, дешевле только бесплатный VPS.
Делать я буду бота который озвучивает сообщения при помощи сервиса от того же яндекса: https://cloud.yandex.ru/services/speechkit и бота который делает цветные фотографии из Ч/Б при помощи сервиса от mail.ru https://mcs.mail.ru/vision/ , несмотря на то что основная цель данного сервиса — распознавание образов, этот сервис имеет функцию улучшения изображений https://mcs.mail.ru/help/ru_RU/manage-vision/vision-image-ap. .
В первую очередь нам необходимо создать аккаунт в Yandex Cloud (или Google Cloud, если вдруг кто-то захочет повторить процесс там), подробно данную процедуру я описывать не буду, там ничего сложного.
После создания аккаунта заходим в консоль: https://console.cloud.yandex.ru и в левом меню переходим в пункт Cloud Functions, создаем функцию и придумываем ей имя.
После этого нам предлагают выбрать язык
Как видите, выбор большой. Я же не буду искать лёгкий путей и выберу Bash.
После этого мы попадаем в редактор.
В настройках в нижней части мы будем добавлять переменные окружения для хранения там, например, API ключа от бота. Также желательно увеличить таймаут, так как процесс синтеза речи или обработки фотографий может быть не быстрым.
Важно: После каждого изменения необходимо в правой части экрана нажимать на кнопку «Создать версию». В документации https://cloud.yandex.ru/docs/functions/ может почитать детальную информацию по каждому языку и посмотреть примеры.
Так выглядит моё окно редактора с полностью готовой функцией.
В переменных окружения указан API ключ от бота который выдаётся при его создании.
И указан FOLDER_ID необходимый для работы синтеза речи, подробнее тут: https://cloud.yandex.ru/docs/speechkit/quickstart
Теперь осталось перейти в обзор функции сделать её публичной и скопировать ссылку для вебхука. Ссылку для вебхука я устанавливал командой:
<API_KEY> — заменить на токен бота, а в url= соответсвенно ваша ссылка.
На этом всё, бот должен работать. Проверяем:
Для создание второго бота проделываем всю ту же процедуру, но на этот раз, для использования сервиса обработки фотографий, нам необходимо зарегестрироваться ещё и на сайте https://mcs.mail.ru , и получить там токен для использования его в API.
Готовая функция выглядит так:
Не обращайте внимания на подсветку кода, из-за сложного синтаксиса в 11 строке всё ломается. В переменных окружения как и в прошлый раз указан API ключ бота и API ключ от mail.ru .
Ещё пример колоризации:
Фотографии взяты из последних постов на пикабу по тегу черно-белое фото
P.S. Приведённый мной код хоть и работает, но представляет из себя определенную субстанция, так как в нём нет абсолютно никаких обработок ошибок и т.п. Единственное что есть — это проверка того что присланный файл это фотография, во втором боте.
P.S №2. Ссылки на ботов не оставляю так как использованные сервисы по синтезу речи и колоризации фотографий платные, хоть и очень дешёвые. С тарифами можно ознакомится на соответствующих сайтах. Кому любопытно попробовать синтез речи, на сайте https://cloud.yandex.ru/services/speechkit есть такая возможность. А колоризация доступна на сайте: https://9may.mail.ru/restoration/ , но не уверен что используются одни и те же алогритмы.
ИМХО, лучше переплатить 50 рублей в месяц и арендовать VDS.
Актуальные полезные боты для Телеграм
Все боты проверены и работают на 24.02.2023
@gozilla_bot — достает видео или аудио из социальных сетей и онлайн-сервисов, в том числе YouTube и Vk, и отправляет их прямо в чат.
@ocrthis_bot — распознает текст на изображении. Достаточно прислать картинку и получите текст сообщением в самом мессенджере и отдельный документ в формате Microsoft Word
@IGSpy – теперь вы сможете тайно просматривать сторис в Инстаграм.
@Find_vk_face_bot — бот для поиска человека Вконтакте по его фото
@promocode_free_bot — бот находит свежие промокоды и акции на любые интернет-магазин или услуги.
@DrWebBot — бот компании Dr.Web, который прямо в чате проверяет файлы на наличие вирусов. По сути, просто другой интерфейс для онлайновой проверки, доступной на сайте. Потенциально полезная особенность — бота можно добавить в группу, и он будет автоматически сканировать все поступающие файлы и ссылки. Ограничение на размер файла — 10 Мбайт.
@PollBot — бот для проведения опросов. Чтобы создать опрос, добавь бота и напиши, что будешь спрашивать. После этого добавляй варианты ответов по одному, а когда закончишь, напиши /done. Бот выдаст ссылку, нажав на которую ты увидишь список из своих групп. Выбираешь группу, и бот добавится в нее. Теперь твои собеседники увидят опрос и смогут голосовать, набирая команды типа /1, /2 и так далее по количеству вариантов. Посмотреть результаты поможет команда /results@PollBot, а подвести итоги — команда /endpoll@PollBot.
@siteshot_bot — если вам нужна информация со страницы, но вы не уверены в ее безопасности или даже она отмечается антивирусом как потенциальный источник вирусов, то бот пришлет вам изображение страницы как картинку.
@voicybot – помогает перевести голосовые сообщения в текстовый формат.
@Temp_mail_bot – если вам нужно создать временный почтовый ящик, бот вам в этом поможет. Кликните на NEW addres и вам сгенерируют логин и пароль
@taxisniper_bot – указываете адрес, куда нужно поехать, и бот просчитает разницу между всем предлагаемыми такси, чтобы вы смогли выбрать более дешевый.
Скрипт для массового выборочного конвертирования форматов файлов в Ubuntu, например, heic в jpg, вторая серия
Спасибо @Dristofor, который навеял мне мысль про более изящное решение.
В thunar можно добавлять кастомные пункты в контекстное меню (Правка — Особые действия), после чего путь к файлам, имена выделенных файлов и что там надо передаются в качестве параметров в программу обработчик. А еще есть комплект программ ImageMagick, где есть консольная команда convert, которая всякие форматы изображений конвертирует друг в друга с синтаксисом типа convert SOURCE RESULT. То есть, по итогу, задача — выцепить из параметров скрипта имена конвертируемых файлов без расширений, и с полным путем конвертировать их в файлы с теми же именами в новом формате. Причем, не перепиливая скрипт под новый формат каждый раз.
# convertany.sh [result_format] [path] [filename1 filename2. ]
#для использхования с imagemagick
for counter in «$@» #цикл с перебором параметров запуска скрипта
if [ ! $i -eq 1 ] && [ ! $i -eq 2 ] #дурацкое решение, ниже объясню
source=»$2″»/»»$
result=»$
convert «$source» «$result» #конвертировать, собсна
Что все это значит:
Скрипт вызывается с параметрами: 1-желаемое расширение, в формат которого конверируется файл; 2- путь к конвертиируемым файлам; начиная с 3-го параметра — имена файлов в обрабатываемой папке. Все параметры прогоняются через цикл, в котором игнорируются 1 и 2 параметры, а из коротких имен файлов лепятся длинные имена с новым и старым расширением, которые подставляются в команду конвертера imagemagick. Почему-то условный переход на сравнение $counter $1 и $2 у меня не заработал, так что я засунул костыль ввиде счетчика, извинити. Изначально я хотел просто запрашивать пачку длинных имен файлов, но потом узнал, что длина командной строки в линухе ограничена 4кб, и выбрал вариант покороче.
Далее, скрипт у нас, конечно, помечен, как исполнимый, imagemagick установлен. Ковыряем настройки Особых действий в Thunar:
Соответственно, после имя_скрипта.sh и перед %d%N вписываем то расширение, для получения которого мы все это теребим. После заполнения всего этого в настройках, выбираем пачку файлов картинок (причем, можно разного формата), тыкаем в контекстном меню на свежевылупившийся пункт, получаем новые гифки или что там заказывали.
Ньюанс. Во-первых, ранние версии imagemagick (у меня 6-я) не умеют обрабатывать, например, .heic; что оно ест, можно узнать командой «convert -help». Далее, как я понимаю, в поздних версиях вместо convert пишут magick, соответственно, команду в скрипте надо поменять. Ну и, в моем случае, для обработки .heic`ов, нужен сторонний конвертер heif-convert из пакета libheif-examples; вписывается вместо «convert», работает с тем же синтаксисом, в настройках Особых действи тунара надо указать шаблон имени файла *.heic и Появляться, если содержит Другие файлы.
Как оно лепится к наутилусу, я без понятия, но — почти уверен — не сильно сложнее.
Немного накипело
Когда ведут обязательный тег «Реклама вонючего ТГ канала с тупыми шутками, баянами и бесполезными статьями от новорегов» ?
Это отчистило бы ленту. Хоть чуть-чуть.
Продолжение поста «Дерзкая пятница»
У нас на работе восстание машин началось.
Instagram загрузчик
У меня есть проект, который я когда то давно начинал делать для себя и друзей, но потом получилось так, что он стал популярен среди пользователей разных стран и вот я решил поделиться им с вами тут)
Суть моего проекта — это телеграмм бот, который умеет качать исходные фото/видео из Instagram. Пользование очень простое — кидаете боту ссылку на пост из Instagram, а он возвращает вам все исходные фото/видео, которые находятся по этой ссылке.
Причин для получения исходников может быть очень много и у всех они разные, поэтому каждый сам решает для чего ему это надо)
Вот ссылка на моего бота: https://t.me/InstagramSaveFree_bot — может быть кому то из вас он будет полезен и я смогу кому то помочь)
Кейсы для использования:
— Вам надо скачать исходные фото/видео, чтобы разместить их в другой социальное сети
— Вам надо отправить фотки с Instagram пользователю, который не зарегистрирован в instagram
— Вам надо скачать ваши старые фотографии, которые остались только в Instagram
P.S. Бот до сих пор находится в стадии развития и могут встречаться какие то ошибки, если у вас есть какие то предложения по поводу развития бота — можете писать мне( https://t.me/vitaliy_c )
P.P.S. В планах сделать подобных ботов для загрузки из TikTok и YouTube но пока что это все на стадии проекта.
P.P.S. Да, я знаю, что подобных ботов и проектов много и все работают хорошо. Но мне просто хотелось сделать своего из спортивного интереса и я вижу что он полезен людям и им уже пользуется больше 50к людей со всего мира)
Рад был с вами поделиться своим детищем)
Instagram(Meta) признана экстреммистской организацией и запрещена на территории РФ.
Как устроен поиск в моём Telegram-боте для поиска торрентов
Недавно я написал пост, в котором поделился своим Telegram-ботом для поиска торрентов с рутрекера. На удивление оказалось, что сотням людей это оказалось нужно и полезно, что вдохновило меня на дальнейшую работу над этим небольшим проектом и поддержку пользователей.
В этой статье я хочу рассказать о некоторых технических деталях реализации, о которых меня неоднократно спрашивали и в комментариях, и в личных сообщениях через /f.
Что нужно, чтобы найти торрент?
Разумеется, сначала нужен ваш поисковый запрос. Его вы пишите просто как сообщение боту, например, вот так:
Бот получает ваше сообщение и делает с ним несколько вещей. Во-первых, из сообщения удаляются некоторые специальные символы (например, знаки пунктуации и всякие $*^@). Во-вторых, запрос разбивается на отдельные слова.
На этом этапе может обнаружиться, что ваш запрос пустой. Тогда вам отправляется сообщение, указывающее на невозможность поиска.
Далее нужно собственно какое-то хранилище знаний о существующих торрентах, где можно этот самый поиск производить. В нашем случае это собственная база данных, содержащая относительно актуальную информацию о состоянии раздач на рутрекере. О том, почему было выбрано именно такое решение, я расскажу ниже. Пока что отметим, что информации о раздачах много, а полезной для нас среди неё маловато. Например, когда пользователь ищет что-то, как правило это часть названия раздачи (этому способствует бушевавшая в своё время на рутрекере модерация раздач, требовавшая строгих правил оформления), название раздела, имя файлов.
База для поиска устроена крайне примитивно: у нас есть keyword — ключевое слово, по которому будем искать соответствие, ну и адрес раздачи, которой этот keyword соответствует. Получается, что построив индекс базы данных по полю keyword, мы сможем быстро находить вхождения этого слова в базе. Сами keyword’ы мы будем брать из названия раздачи, названия раздела, и некоторых файлов из раздачи.
Теперь осталось соединить ваш запрос и базу. Для этого ещё нужно проследить, чтобы наши keyword были такого же вида, как и слова из запроса после предобработки (см. выше). Например, если мы удаляем какие-то спецсимволы из слов поискового запроса, они также должны удаляться из keyword, иначе чуда не произойдёт.
Ну и конечно же, базу желательно взять побыстрее, т.к. всем хочется, чтобы их запросы обрабатывались как можно быстрее. Поэтому выбор был сделан в пользу ClickHouse. Выглядит поиск подходящих под ваш набор ключевых слов топиков примерно вот так:
Помимо самого факта вхождений, здесь проверяется, чтобы все ключевые слова из запроса были найдены для данной раздачи (topic_id). Т.о. если хотя бы одного слова из вашего запроса в индексе не нашлось, такая раздача не будет вам показана.
Немного статистики: всего уникальных ключевых слов в индексе на сегодня содержится 1,144,565 — что не так много.
Описанная выше схема является довольно примитивной для того, чтобы называться полноценной системой поиска, однако она рабочая. Теперь ответы на другие вопросы, которые могли у вас возникнуть, либо уже были заданы в комментариях.
Почему нельзя просто использовать поиск рутрекера?
Можно, и более того: тогда вы точно найдёте то, что искали бы на рутрекере.
К сожалению, плюсы использования поисковой системы рутрекера на этом заканчиваются.
Обратите внимание, что на рутрекере используется приведение к некоторой базовой морфологической форме, поэтому черная = черный, весны = весна. Из-за этого в результатах могут появиться такие странные находки. У нас вы получите на тот же запрос такое:
Здесь же хочется отметить, что в отличие от поисковой системы рутрекера, на мою можно повлиять, оставляя пожелания и комментарии, которые помогут мне в дальнейшем развитии проекта и сделать поиск лучше.
Вторая и ещё более важна причина использовать свой поиск: независимость от состояния форума. Форум может быть отключён для профилактических работ именно тогда, когда вам нужно что-то поискать, либо может быть вообще удалён, не выдержать DDoS и упасть, да много по каким причинам быть недоступен. А сиды и magnet-ссылки работают и без форума, поэтому найти нужное будет возможно даже в условиях недоступности рутрекера. Ну а скачать найденное получится, конечно, только при наличии сидов.
Третья причина не использовать поиск форума заключается в том, что нужно будет отправлять и получать поисковые запросы на форум. Так как у форума нет API для поисковых запросов (напишите, если нашли, у меня не получилось), то придётся написать свою. Но всё станет медленнее, потому что вам придётся что-то отправлять и ждать ответа от другого ресурса в сети. Обратите внимание, насколько быстро вы получаете сообщение от бота! Даже в моменты, когда первый пост обрёл популярность и в первые сутки случится пикабу-эффект, пиковая нагрузка была далеко до предельной.
Откуда база данных для поиска, и как её самому сделать?
Здесь тоже никаких секретов быть не может, просто берём и парсим весь рутрекер =)
Для того, чтобы не положить форум, одна итерация обновления базы и индекса растягивается от пары до шести часов. А, ну ещё можно использовать «базы», выложенные на самом рутрекере (только обновляются они раз в месяц в лучшем случае).
Если хотите потренироваться, а парсингом не хочется заниматься — можно взять их. К слову, будьте готовы, что там вас в качестве базы будет ждать просто 3-х гиговый XML-файл. У нас же это выглядит как-то так (posts это база вообще всех постов рутрекера и не участвует пока что в процессе):
Обратите внимание, что места на жестком диске для подобной реализации вам понадобится менее 1 Гб, что делает проект относительно дешевым для размещения на каком-нибудь хостинге.
Спасибо, что дочитали до этого места! Я очень рад, что людям стал интересен и полезен этот проект. С момента первого поста на пикабу я внёс несколько ощутимых изменений в бота, подсказанных пользователями. Приглашаю всех, кому это актуально, воспользоваться моим ботом:
P.S.: Да, всё ещё «test».
Kачаем торренты с помощью Telegram без регистраций и SMS
Что делать, если я не могу попасть на rutracker.org , а качнуть чего-то конкретного хочется?
Когда-то давно, когда ещё это всё, связанное с Telegram-ботами было в новинку, существовало множество этих самых ботов, которые помогали справляться с блокировками от Роскомнадзора.
Теперь, при попытке найти рабочее решение, выясняется, что боты либо неактивны, либо просят «подтвердить» номер телефона и ведут на посторонние сайты, либо вообще «недоступен в связи с нарушением авторских прав». А ведь далеко не у всех есть возможность и желание предпринимать усилия для обхода бесконечных блокировок.
Тогда я сделал своего бота, который просто работает.
Находится бот по адресу в telegram @rutracker_org_test_bot
Просто пишем, что хочется найти. Регистрация, смс, подтверждение номера — всё это напрочь отсутствует. Потому что не нужно. Сразу можно искать, ограничений нет.
Выдаёт за раз до 15 результатов с сортировкой по убыванию количества скачиваний. В конце результатов поиска ссылка на следующие 15 раздач по вашему запросу, если они могут быть найдены.
При нажатии на ссылку после «скачать», бот отправляет вам уже непосредственно magnet-ссылку, по которой можно скачать контент (при наличии раздающих).
Полученную magnet-ссылку копируют в torrent-клиент (например, uTorrent, qBittorrent, Deluge, Transmission, BitTorrent, BitComet etc). Обычно при добавлении нового торрента есть возможность указать, например, «добавить по URL», или «по magnet-ссылке».
С помощью команды /h можно найти список раздач, у которых заданных infohash. Нужно в случае, например, когда вы знаете infohash раздачи, но не знаете, где посмотреть подробное описание раздачи и есть ли она на rutracker.org вообще. По большому счету данная ситуация — редкость, однако знайте, что подобная возможность тут имеется.
Стоит сказать, что поисковый движок у бота свой собственный, и находится в активной разработке (не зависит от rutracker.org ) — поэтому результаты поиска могут отличаться от «оригинального» поиска непосредственно на рутрекере.
Другие команды бота:
/allow_notifies добавляет вас в список рассылки оповещений сервиса от бота, а именно: обновления и смена адреса при блокировке бота со стороны правообладателей, что вполне вероятно.
/f позволяет вам отправить сообщение непосредственно разработчикам бота.
/help показывает подробную справку.
Бот делался для небольшого круга знакомых лиц, по мере готовности я решил распространять информацию о нём, возможно бот будет кому-то полезен. Бросать поддержку этого бота не собираюсь, т.к. всё равно есть хостинг для других проектов. Из ближайших планов: добавить отображение размера раздач, улучшение поисковой системы (чтобы можно было, например, при поиске фильма указать кодек или разрешение, при поиске книги — формат. Это можно сделать и сейчас, но работать будет только если эта информация есть в названии топика).
Какие могут быть дальнейшие пути развития этой далеко не новой идеи с telegram-ботами поиска? Например, до кучи можно ещё объединить раздачи с других трекеров, например, книжного. Насколько вообще востребованы такие сервисы? Ведь многие люди давно научились обходить блокировки с помощью VPN, и кому-то весьма ограниченный интерфейс Telegram-бота не так удобен, как первоисточник. Зато у бота нет рекламы.
А может всё это и вовсе не нужно уже, как вы считаете?
Я устал откладывать спорт и сделал Telegram бота, который скидывает одно упражнение каждый день
История о том, как я забил на спорт из-за нехватки времени и с помощью бота в Telegram вернул его в свой плотный график.
Привет всем! Меня зовут Илья, я продуктовый аналитик в IT-компании. Этот год решил проверить нас на ту самую строчку в резюме – стрессоустойчивость. И я эту проверку не прошел. Из-за большого количества работы и постоянной тревоги я стал все меньше времени уделять себе, совсем перестал заниматься спортом.
В итоге я стал чувствовать себя хуже, набирать вес, быстрее уставать. Несколько раз пробовал вернуться в ритм, начать заниматься спортом, но выйти на регулярность не получалось – не хватало времени. Эта проблема на самом деле касается многих: знакомые и коллеги в последнее время тоже стали меньше следить за собой — становится тяжелее взять себя в руки.
Существует много приложений для занятий спортом, но все они не работают, когда нужна регулярность. Слишком навороченные программы тренировок, упор на результат. Большинство людей бросают занятия, когда проходит первичный заряд мотивации.
Как превратить первичную мотивацию в привычку
Привычка – это действие, которое мы совершаем автоматически, освобождая тем самым когнитивные ресурсы для более важных задач. Мне захотелось сделать спорт машинальным действием (как включение света при входе в темную комнату).
Чтобы выработать привычку, я решил сделать ее как можно проще: не отдельное мероприятие (пробежка, двухчасовая тренировка в зале), а одно упражнение и один подход. Заставить себя сделать одно упражнение легко, вы буквально обманываете свой мозг. Это давно известное решение проблемы.
Это работает, но можно и лучше
Получается классно, но следовать этой привычке все равно сложно. Надо каждый день выбирать упражнение, вспоминать, а делал ли ты его уже на этой неделе или нет, сколько повторений нужно. А действие в рамках хорошей привычки должно быть максимально доступным.
Тогда я попытался найти приложение, которое каждый день выплевывает тебе конкретное упражнение и количество повторений, а тебе остается только его сделать. И я не нашел! Зато обнаружил много навороченного шлака, типо «сбросить вес за 30 дней» или «150 отжиманий за неделю». Это те самые программы тренировок, которые вы забросите через день.
Так я решил сделать своего Telegram бота
В первую версию я добавил пять упражнений, сделал простую шкалу увеличения повторений. И, чтобы поощрять мозг за регулярность, добавил отслеживание прогресса.
Попользовался сам, докрутил до приличного вида и теперь делюсь с вами!
Внедряйте полезную привычку уже сейчас!
P.S. Одно упражнение в день вообще на что-то влияет?!
Смотря какая у вас отправная точка. Если вы совсем не занимаетесь спортом, то через пару недель таких занятий улучшение будет заметно.
Пишите в комментариях идеи, предложения и конструктивную критику. И обязательно расскажите, какими спортивными приложениями вы пользовались?
Stackoverflow developer survey 2022, часть 2. Специализации, технологии, IDE
Продолжаем ковырять stackoverflow developer survey. Начнём с области деятельности (developer type). Интересно узнать, как много представителей тех или иных специализаций.
Удивительно много full-stack developer. Разработчиков настольных приложений больше, чем мобильных разрабов. В области devops трудятся 10%, отбирая хлеб у старых добрых сисадминов с их 8%. Облачной инфраструктурой заняты 9%.
При этом не разработкой единой. Полно специалистов в совершенно разных областях. Интересно, что преподавателей (Educator) только 3.5%. Столько же SRE (Site Reliability Engineering), занимающихся обеспечением надёжности функционирования сайта. У гугла есть книга про SRE. Нередко devops и SRE смешивают. Отзовитесь, у кого есть SRE и DevOps, кто чем занят?
Тестировщиков только 5%. Надеюсь, это следствие разработки тестов сразу с кодом со стороны разработчиков. Юниттесты наше всё.
Отдельно 2% ребят про blockchain.
В прошлом посте я на основе TIOBE показывал динамику популярности разных ЯП, но выводам мешает субъективность любого рейтинга. В опросе же вопрос сформулирован «на каком языке вы интенсивно разрабатывали в последние годы и на каком хотите работать в следующие годы?». Посмотрим отдельно действующих разработчиков: в лидерах привычные JS, python, Java, C#. Удивительно высока доля bash наравне с C# и почти с Java.
А вот среди студентов (категория learning to code) есть интересные тенденции. Во-первых, 58% python (против 44% у действующих разработчиков). Тенденцию мы видим и вокруг себя, многие любят python в качестве первого языка программирования. Я считаю, что у этого подхода куча минусов, и как-нибудь соберусь поделиться своими мыслями на этот счёт. Во-вторых, среди студентов только 38% SQL против 53% у разработчиков. Думаю, без знания SQL разработчику, в целом, не очень комфортно. Интересно, что доля PHP составляет 19% у студентов и 21% у разработчиков. Это противоречит динамике рейтинга TIOBE. В-третьих, крутой Go с 12% у разработчиков занял только 5% в умах студентов (даже не влезло в картинку ниже).
Дальше смотрим на базы данных у профессиональных разработчиков. PostgreSQL на почётном первом месте. При этом топ-4 базы являются реляционными. Учите SQL, господа студенты, это полезный навык. Что интересно: если mongoDB 28% у разработчиков и 31% у студентов (скрин не стал вставлять), то elasticsearch 14% у разработчиков и 1.5% у студентов. То есть elasticsearch не учат.
С точки зрения облачных платформ ситуация такая. AWS в лидерах, дальше ряд крупных игроков. При этом по затраченным на облако финансам, насколько я помню, AWS крупнее остальных топ-5 игроков вместе взятых. Или уже нет?
Популярность веб-фреймворков среди разработчиков. Интересно сравнение со студентами. Резко потерял популярность angular (23% у разрабов против 10% у студентов), схожая ситуация у ASP.NET Core (21% у разрабов против 10% у студентов). Набирает популярность Django (14% у разрабов против 21% у студентов). Радует заметная популярность FastAPI с его 6%.
Интересная ситуация с other tools у разработчиков. Сюда зачем-то включили менеджеры пакетов (npm, yarn, homebrew) и фреймворки для игр (unity и unreal engine). Если их убрать, то 70% docker + 25% kubernetes. Можно сделать вывод, что без докера в современной разработке серверных приложений никуда. Среди студентов, кстати, доля docker только 31%. Надо подтягиваться, господа.
Используемые IDE разработчиками такие. С большим отрывом лидирует VSCode. Интересна доля notepad++. Совсем удивительна доля vim 24% + 6% neovim. Это больше, чем IntelliJ. Ура фанатам vim 🙂
В целом, не очень репрезентативные данные. Сравниваются IDE общего назначения и специализированные по языку. Условный PyCharm для python, IntelliJ для Java, а VSCode для всего. Отсюда и перекосы. Видны умирающие мастодонты типа NetBeans с 5%. Ладно, не видны, не влез он на скрин.
Для совместной работы в лидерах Jira.
Для коммуникации slack, teams, zoom. Не знаю, почему телеграмма нет.
Интересно, что среди разработчиков аномально высокая доля linux. Удивительную долю занимает SWL.
Вот такая вторая часть обзора. Надеюсь, вам понравилось.
В телеграмм-канале DevFM разбираем разные нюансы из жизни разработчика на Python и не только. Все посты за сентябрь можно посмотреть тут.
Stackoverflow developer survey 2022, часть 1. Как учатся разрабатывать и что с возрастом по индустрии
В 2022 году в stackoverflow developer survey участвовало более 70к человек из 180 стран. Из-за большого числа участников получаются репрезентативные данные — какие технологии в трендах, куда в целом индустрия плывёт. Во многих опросах в качестве ответа можно выбрать несколько вариантов, поэтому сумма больше 100%. Для тех, кто не видел результаты опроса, я планирую показать отдельные кусочки в серии постов с моими (да кому они нужны) комментариями.
Как вы научились программировать? Среди ответов лидируют онлайн-ресурсы.
Интереснее посмотреть срезы по возрасту. Все данные можно посмотреть тут. Среди лиц до 18 популярность онлайн-площадок 85%, и книг 37%. С увеличением возраста доля онлайн-площадок падает, а книг растёт.
Для самой многочисленной категории 25-34 (их 40%, ниже будет) заметны 21% «учусь у коллег» против 3% у предыдущей категории. Вот почему считается важным работать в сильном коллективе. Обмен опытом часто продуктивен в обе стороны.
Для сравнения, в категории 45-54 лет доля книг 85%. Грустная тенденция, с моей точки зрения книги часто дают более целостное представление о технологии. С грустью узнал, что тот же Изучаем Python Лутца многие не хотят читать из-за объёма.
Любопытно, что под online resources подразумевается и техническая документация. Доля how-to videos аж 60%. Люди любят видео контент, хотя это самый медленных путь потребления технической информации. Можно смотреть на ускорении типа 1.25-1.5, но я вот на большей скорости не воспринимаю. Кто может смотреть на х2, признавайтесь?
Среди образовательных площадок за рубежом лидирует Udemy. Мне больше нравится Coursera со второго места. Среди отечественных вариантов знаю популярный stepik. Кто-нибудь видел свежий обзор отечественных образовательных площадок?
Общий опыт разработки (включая обучения) показывает такое распределение. У 16% респондентов свыше 20 лет опыта. Но костяк индустрии составляют миддлы с опытом 5-9 лет (минус года 4 на образование, то есть 1-5 лет)
Собственно, так мы и видим в разрезе «сколько лет разрабатываете профессионально».
Важно при этом, кто людей 35+ в программировании много. Можно не переживать о будущем разработчика, они и в годах востребованы. Есть подозрение, что с годами средний возраст разработчика продолжит расти.
Кстати, суровая гендерная правда — 92% мужчин. Нужно больше девушек!
В следующий раз обсудим технологии.
В телеграмм-канале DevFM разбираем разные нюансы из жизни разработчика на Python и не только. Все посты за сентябрь можно посмотреть тут.
Ответ на пост «ИТ Пузырь»
Прочитал пост и 200+ комментов, которые на сейчас есть. Вроде никто не указан на важное — реально выросла потребность в разработчиках. Это одна из причин драйва зарплат — конкуренция работодателя за кадры, т.к. предложение меньше спроса.
Другая причина высоких зарплат, кстати — глобальная конкуренция за зарплаты. В плане из-за удалёнки и релокации последние 15 лет значительная часть разработчиков выходила на глобальный рынок, в результате конкуренция на локальном рынке повышалась из-за оттока кадров.
А дальше проблема — никто не умеет поточно готовить крутых специалистов. Программы в институтах устаревают ещё к моменту формирования. Технологии быстро изменяются. Хороший разработчик, став преподавателем, быстро теряет технический скилл и отстаёт от рынка. Более того, нередко хороший разработчик не является хорошим педагогом, потому что это совсем другая область деятельности. Уметь донести материал, уметь построить лекцию, уметь проверить знания (в условиях, когда студенты всеми силами пытаются халявить) сложно.
Условно, middle python разработчик решил пойти преподавать. У него года два или три займёт получить опыт преподавателя, и, возможно, он станет хорошим преподавателем. Но он уже на 2-3 года устарел по технологиям. Да, изменилось не всё. У нас всё ещё семиуровневая модель в интернете. Но всё поменялось вокруг.
И зарплаты у преподавателей такие себе. Например, возьмём топ технических вузов. Пусть будет №13 по рейтингу — МИРЭА. Смотрим их зарплаты — старший преподаватель до 30 лет будет получать 127к в месяц. Это 110к на руки. А после 31 года уменьшится стимулирующая надбавка за молодость и зп упадёт до 107к (93к на руки). Вспомним рейтинг зарплат с хабра за 1 полугодие 2022 года? Медианная зарплата разработчика в Москве 180к.
То есть нам надо найти опытного разработчика, который захочет преподавать, пойдёт на кратное падение зарплаты, потратит несколько лет на преподавание, возможно станет в этом хорош — и мы получим хорошего преподавателя, который слегка устарел по технологиям. И дальше устаревание может усугубиться.
Большой спрос на ИТ-специалистов пытаются закрыть платные курсы. Типа вместо полезной математики и кучи бесполезного типа философии в институте мы даём только профильное, поэтому и в срок до года можно уложиться. Но, к сожалению, высокая цена не является гарантией качества. Более того, посмотрите вакансии спецов, которых набирают на курсы для code review или преподавания. Там опять зарплаты ниже, чем у разработчиков. Что в результате? В среднем мы имеем либо совсем инфоцыганские курсы, либо дорогие курсы со средним материалом. Я сейчас про курс «с нуля до middle», с ними основные проблемы. Есть исключения. Например, есть небольшие курсы по отдельным технологиям, которые вполне могут быть оправданы.
Институты и хорошие курсы (платные или бесплатные) держатся на тех активистах, которые и разработку продолжают, и хотят делиться знаниями. Если знаете таких активистов, скажите им спасибо 🙂
При этом требуемый уровень знаний в разработке (хотя бы по количеству инструментов) продолжает расти. Люди, которые идут в ИТ за зарплатами не представляют, как много требуется сил и времени на постоянную актуализацию знаний.
А ещё растёт потребность в управленческих должностях (team lead и прочие ребята). С их подготовкой вообще ужас — им нужен опыт управления людьми. А где его взять? Как создать условия, чтобы после института/курса на выходе был team lead с реальным опытом руководства несколькими командами? Переквалификация разработчиков в team lead имеет кучу неприятных побочных эффектов. Разработчик привык управлять послушным компьютером, а тут непослушные и недетерминированные люди. Ужас.
Даже область HR стагнирует. Они совсем не умеют подбирать кадры.
А собеседования разработчиков — вообще ужас. На них спрашивают то, что не нужно в работе. Создана отдельная индустрия натаскивания на собеседования. Готовиться к собесам — зло. Насколько я понимаю, это исключительно ИТ-специфика. Вы слышали истории, чтобы хирург готовился к собесу? Или пилот? Воспитатель в детском саду? В отдельных профессиях есть сертификация, конечно. Но это немного другое.
Излил я вам свою боль о современном состоянии подготовки новых кадров в разработке. Есть ли у вас идеи, как ситуацию починить?
Что сделал я для исправления ситуации? В телеграмм-канале devfm разбираем разные нюансы из жизни разработчика на Python и не только. Стримы по программированию, что такое WSGI, как спроектировать сервис, чему стоит научиться в вузе. По пятницам у нас культурный код с фильмами, книгами и всяким разным.