Привет, я Денис (●´ω`●)
... иногда пилю небольшие проекты для opensource
В этот раз все началось с того, что в чатике Грузии разрешили всем участникам закреплять сообщения. После этого появилась идея сделать бота, который прибирает за людишками и автоматом открепляет сообщения временных эвентов в чате спустя N дней.
Демо
Что вошло в прототип и сколько времени на него было потрачено?
Пока реализовал базовый функционал реплая на запиненное сообщение и открепления его спустя выбранное время.
Сам проект небольшой, ушло пару дней на реализацию и запуск прототипа.
Какой технологический стек вы использовали? Почему?
Решил потестить lib, которые пока страшно тащить в prod.
По этому под капотом Python и pyrogram которые реализует MTProto. В качестве базы - Postgres и прикольная orm gino.
Вот так выглядит логика открепления сообщения в псевдокоде:
while True:
messages = 'select * from unpin';
messages.unpin()
sleep()
вот ссылочка на кот: github.com
Инфраструктура это GitHub CI для сборки образов, Docker на виртуалки и Ansible как клей, который все деплоит. Могу выложить плейбук, если интересно.
Минусы/Плюсы выбранного стека:
- pyrogram - не хранит состояния и при редиплое теряет сообщения. Плюс, что работа идет напрямую с MTProto, хотя для данного проекта это не дало плюсов.
- gino - интересный асинхронный orm, но очень сырой и нехватка документации.
кот поселился тут: github-кот
Какие планы на будущее?
-[ ] доставать даты прямо из сообщений
-[ ] добавить команду для пина сообщений
Технические:
-[ ] перейти на webhook или long polling, чтобы не терять сообщения при редиплое
-[ ] тесты ¯\_(ツ)_/¯
Нужны ли какие-то советы или помощь Клуба?
Классно было бы получить советы, что можно еще добавить и найти добрых людей, которые готовы писать issues и слать PR.
Всем спасибо за внимание (づ。◕‿‿◕。)づ ♡