📫 Link saver bot for Telegram
I’m excited to present my recent pet-project that has finally arrived! Here I will describe how it works and which technologies are used internally.
What is it?
It is a Telegram bot 🛫 that stores your links and provides simple management interface. I had been looking for something like that for a long time because I usually use Telegram to quickly store or sync something between devices. Although there are many bookmark managers available, as well as the “Saved Messages” chat with a “Links” menu, they are uncomfortable for me for various reasons.
What does it can and how to use it?
The application’s functionality is pretty simple. As for now you can:
- Save a link by sending it to the chat.
- List all saved links by typing either
/ls
or/list
command. - Remove a stored link by selecting it from the
/ls
output and pressing theRemove
button.
In the future, I also plan to add some simple category management and improve the user-friendliness of the /ls
output. After that, I believe the project will be complete as long as I don’t want to bloat the application with dozens of functions. Let it be simple, but still quite useful.
Tech overview
This project is not very serious and more of a starting point. It served as a playground for new technologies:
- Code is written in Scala using zio, bot4s/telegram, slick, and flyway.
- The build is adjusted to be GraalVM-compatible and produces native, statically linked binaries.
- The entire project is wrapped with nix, which provides a reproducible environment and is responsible for building docker images.
- GitLab CI runs build on commit and pushes the docker image to the GitLab registry.
- The flux-powered k8s cluster listens to the GitLab registry and re-deploys newly pushed images.
There is still room for improvement, but for now, I’m quite satisfied.
Conclusion
I’m open to any feedback and suggestions for features and/or changes.
Thank you for reading this little article, I hope it will be useful to someone. Feel free to reach me if you have something to say.
And also take a look on the posts on similar topics: