Pull to refresh

Как я организовал канал с мемами, который занимает 10 минут в день

Level of difficultyEasy

В этой статье покажу, как устроен мой Telegram-канал с IT-мемами: откуда берётся контент, как работает бот-админ, как устроена модерация и планирование постов, и почему диск не умрёт даже через 8000 лет. Возможно, ты захочешь сделать что-то похожее — или предложишь, как улучшить мою систему.

1. Идея и цель проекта

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

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

Изначально идея была просто сохранить лучшие мемы — вроде бы ничего сложного. Но на практике это превращается почти в отдельную работу: нужно найти мем, скачать его, проверить формат и качество, не забыть выложить его в канал, а желательно ещё и в нужное время. Если заниматься этим вручную каждый день, то скоро начнёшь чувствовать себя не админом, а SMM-щиком на фуллтайм.

Я понял, что если не автоматизировать процесс, он быстро станет обузой. Поэтому я решил построить систему, которая возьмёт на себя рутину: от сбора и фильтрации до публикации. Так мемы появляются в канале сами, а я просто слежу, чтобы всё работало — как настоящий DevOps для юмора 😄

2. Техническая реализация

Бот, который управляет сбором, модерацией и публикацией мемов, написан на Python. Вся логика упакована в Docker-контейнер и работает через вебхуки на собственном сервере с доменным именем.

В реализации используются две основные библиотеки:

  • aiogram — для обработки Telegram-бота, управления кнопками, модерацией и планированием постов.

  • telethon — для парсинга контента из других Telegram-каналов от имени отдельного Telegram-аккаунта.

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

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

3. Откуда берутся мемы?

Источник мемов — это отдельная тема. У меня есть пара Telegram-каналов, где я сам регулярно смотрю IT-мемы. Там частенько попадаются настоящие жемчужины. Плюс, друзья и коллеги часто скидывают мне мемы в личку или в рабочих чатах — и среди них тоже много годноты.

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

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

Я настроил парсинг всех мемов из выбранных Telegram-каналов, включая мой канал-помойку. Это позволяет собрать максимальное количество потенциально интересных медиа. После этого включается ручная модерация — но она сделана удобно и по-умному.

Для этого я написал Telegram-бот, который по очереди присылает 10 картинок с двумя кнопками под каждым медиа:

  • ✅ Принять

  • ❌ Отклонить

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

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

4. Хранилище и фильтрация

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

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

Перед тем как запускать систему, я обсудил это с ChatGPT 😄 — мы прикинули, т.к. в день будет проходить 10 медиафайлов, включая видео, что даёт примерно 50 МБ записи в сутки. Тесты это подтвердили.

И что получается?

Если считать, что обычный бытовой SSD на 500 ГБ рассчитан на ~150 TBW (терабайт записи за весь срок службы), то при такой нагрузке диск будет жить более 8600 лет 😄

Так что, похоже, можно особо не париться.

Бот работает к контейнере Docker
Бот работает к контейнере Docker

5. Планирование и расписание публикаций

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

Фиксированные посты (жёстко заданные таймслоты):

  • 🕘 9:15 — утренний мем, чтобы начать день с улыбки

  • 🕐 13:00 — обеденный, чтобы развеяться во время перерыва

  • 🕕 18:00 — вечерний мем, чтобы закончить рабочий день с настроением

Случайные посты: Кроме фиксированных постов, система публикует ещё остальные 7 мемов в случайное время в интервале с 10:00 до 22:00. Это добавляет элемент неожиданности и держит подписчиков в тонусе.

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

Код c функцией планировщика
Код c функцией планировщика

6. Логика автоматизации

Вся система построена вокруг одного Telegram-бота-админа, через которого я управляю всем процессом: от парсинга до публикации. Более того — любой желающий может прислать ему мем, если хочет, чтобы тот попал в канал.

Как работает процесс:

  1. Старт:Я нажимаю кнопку в боте — и начинается парсинг новых мемов из всех источников.

  2. Модерация:Бот поочерёдно присылает мне картинки (одна за другой), и я решаю: ✅ принять или ❌ отклонить. Цель — собрать 10 мемов на день.

  3. Формирование расписания:После отбора бот автоматически составляет расписание на весь день, включая жёсткие слоты и случайные таймслоты.

  4. Публикация:Мемы публикуются строго по графику — всё автоматизировано, а я могу просто наблюдать и наслаждаться результатом.

Это всё позволяет держать канал активным, не тратя кучу времени каждый день. Один сеанс модерации утром — и весь день расписан.

7. Подписывайся, делись и участвуй

Канал с мемами я сделал закрытым, однако под каждым постом есть ссылка на вступление — если кому-то понравился мем, он легко может перейти и подписаться. Это пока временное решение, потому что, к сожалению, я не нашёл удобного способа отследить трафик, приходящий именно с постов внутри Telegram.

Если тебе зашла идея и ты кайфанул от мемов — поделись каналом с друзьями, которые тоже варятся в IT и любят хороший юмор. Давайте соберём комьюнити, которое будет не только смотреть, но и делиться своими находками.

У тебя есть идеи, как можно улучшить автоматизацию или добавить что-то новое?
Пиши мне, предлагай — я всегда открыт к улучшениям и с удовольствием реализую интересные фичи.

Подписаться на канал c мемами: https://t.me/+3BvXBuEsiqI4MzIy

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.