Проект: 🦾 Link Kicker  Публичный пост
20 января 2022  1568
🦾 Link Kicker
https://t.me/link_kicker_bot

(тут котики потому что иконку мне еще не нарисовали, зато какие! :D)

Привет! Расскажу про бота для Телеги, которого я решил запилить на досуге

Расскажите о себе и сути проекта?

Я обычный питонист-бекендер, который увлекся программированием еще в детстве и всегда делал всякие небольшие проектики, а теперь еще дошел и до того, чтобы показывать их на обозрение (просто родилась не самая бесполезная идея:D)
Суть заключается в том, что бот отправляет каждый день по случайной ссылке из тех, что вы в него закинули. Для чего? Читайте в следующей главе!

Как появилась идея? Что вдохновило?

Одним вечером я сидел за своим ноутбуком и вдруг набрался решимости почистить свои 250+ вкладок в браузере, попутно смотря, что ценного я в них мог оставить. А оставил я там кучу классных статей, которые когда-то решил "отложить на потом" (иногда такие статьи попадают в закладки, но тоже оказываются в лимбе непрочитанного). Поспрашивал своих друзей-знакомых , есть ли у них такая проблема с лимбом непрочитанных статей, оказалось что у большинства - да! Так и родилась идея для бота, который будет "пинать" читать сохраненные статьи и не забывать о них.

Что вошло в прототип и сколько времени на него было потрачено?

Бота я начал делать в августе 2020, когда лежал в ковидном госпитале, но после развивал его очень эпизодически (достаточно посмотреть на историю коммитов, ггг)
Сейчас у него имеется возможность принимать ваши ссылочки посредством отправки их ему в телеге, показывать вашу статистику, и отправлять каждый день в выставленное время (пока что, увы, только МСК) по рандомной ссылке.
Примерно так бот вас приветствует и сразу же предлагает выставить удобное время для получения ежедневной "рассылки":


А так выглядит сама рассылка:

Боту можно закидывать как одну ссылку

Так и сразу несколько!

А еще недавно добавил возможность просматривать непрочитанные ссылки (самым сложным тут было сделать человеческую пагинацию у бота, для aiogram нет готовых решений)

Вот, кстати, stonks

Какой технологический стек вы использовали? Почему?

Python (потому что питонист), aiogram (асинхронная либа для тг-ботов, потому что привычно и асинхронно), tortoise-orm и aerich для миграций (потому что удобно, асинхронно и привычно).
Запускал на своей VPS у Contabo. Никакого особо ci/cd нет, сначала ручками раскатывал, а потом накатал скрипт, который слушает вебхуки с гитхаба (https://github.com/FMajesty/simple-ci) и выполняет скриптик, который гитпуллит, подтягивает обновления зависимостей, запускает миграции и перезапускает сервис.

Как вы запускались и искали первых пользователей?

Порассказывал про бота знакомым, они своим, те своим... и так по цепочке. Рассказывал о боте в русскоязычных каналах тележеньки для людей с СДВГ. Теперь дошел до сюда (потому что снова взялся за бота и напилил дополнительных фич)

С какими самыми неожиданными трудностями пришлось столкнуться?

ПЕРЕНОС БАЗЫ С SQLITE НА POSTGRESQL! Это было больно. Есть готовые решения вроде pgloader чтобы не переносить всё руками, но... у меня Макбук с M1 и ни одна из тулз не заводилась на нём. Пришлось всё переносить ручками и фиксить типы данных, на помощь пришел лишь джетбрейновский DataGrip.

Сколько потратили и заработали? Есть идеи как это можно монетизировать?

Трачу на ВПСку ежемесячно по ~400 рублей. That's it.
Монетизировать бота вообще никак не собираюсь, сделал для себя и людей:)

Какие планы на будущее?

Английская локализация (уже почти что готово!) бота и расширения для браузера, чтобы ПКМнул ссылочку и сразу в бота отправил.

Нужны ли какие-то советы или помощь Клуба?

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

Какой совет вы бы сами могли дать идущим по вашим стопам?

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

Репа бота - https://github.com/FMajesty/link-kicker
Спасибо, что дочитали! Открыт к любому фидбеку:)

16 комментариев 👇

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

Большое спасибо за бота, уже скормил ему пачку ссылок. Есть два вопроса:

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

— Можно ли как-то настроить два интервала? Например, чтобы получать две ссылки в день: одну в обед, а одну вечером после работы.

  Развернуть 1 комментарий

@trehkolesniy

  • Есть уже команда /hour, просто забыл добавить в список. Спасибо, что напомнил!
  • Пока что нет, хорошая идея. Займусь:)
  Развернуть 1 комментарий

Привет! Классный бот, спасибо. Я все сохраняю в Pocket и вопрос регулярности чтения решала посредством напоминалки/привычки типа «Прочитать две статьи из Pocket». Попробую теперь эту задачу решать ботом. Глядишь, разгребу бэклог из непрочитанного :)

  Развернуть 1 комментарий

@kaktotak, кстати, думал над тем чтобы сделать из него импорт, или что-то вроде того. Спасибо за фидбек! Удачи с разгребанием;)

  Развернуть 1 комментарий

@fmajesty, спасибо 🤗

  Развернуть 1 комментарий

@fmajesty, вопрос: верно понимаю, что он сейчас не сравнивает новую ссылку с теми, которые были закинуты ранее? Можно ли сделать так, чтобы он отвечал, что эта статья уже есть в списке непрочитанных? Правда, тогда вопрос, что будет, если скормить прямую ссылку и ее же, сокращенную в сокращателе.

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

  Развернуть 1 комментарий

@kaktotak, хорошее замечание! Не думал об этом, сделаю)

  Развернуть 1 комментарий
Anton Sol решаю вопросики (с данными) 20 января 2022

Клёвая идея! Можно еще напоминать себе перечитывать что-нибудь интересное!)
Возможно попробую в будущем, а пока для сохраненок уже есть табличка в ноушене которую никогда не открываю.

  Развернуть 1 комментарий
Юра Своев Оператор-постановщик и дизайнер 20 января 2022

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

Я не программист, собрал на Интегромате и Гугл табличке. Опубликовать и позвать людей — руки не дошли.

Когда все это делал, заметил, что надоедает ожидаемость и добавил эффект случайности.

Предлагаю добавить при выборе времени такую настройку.

Получилось круто!)

  Развернуть 1 комментарий

@yurasvoev, под эффектом случайности подразумеваю придет или не придет)

  Развернуть 1 комментарий

@yurasvoev
Спасибо! А что ты подразумеваешь под "ожидаемостью"?

  Развернуть 1 комментарий

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

Я добавил элемент случайности, 50 на 50 бот отправлял случайную мою запись или ссылку. Иногда бот мог молчать пару дней из-за чего я не мог привыкнуть.

Так стало интереснее, потому что неожидаемо.

Еще заметил, что базовые ответы о том, что все ок и записалось тоже надоедают и я сделал случайный смайлик в ответ, чтобы дать обратную свзяь, что все ок. Интересно смотреть всегда разный. Может пригодится).

  Развернуть 1 комментарий

@yurasvoev, а отличные идеи! Спасибо:)
Надо будет добавить

  Развернуть 1 комментарий
Nikita Yudenkov Python Engineer автор 20 января 2022

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

  • Рассылки через бота
  • Отдельный канал в телеге
  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб