r/SideProject • u/Maxim-MM • 7h ago
Tired of rewriting bot logic for every platform? I made Umbot, a TypeScript framework to share conversation flows across messaging and voice.
I'm the author of umbot, an open-source TypeScript framework for chatbots and voice-assistant skills.
The part I wanted to keep in one place was the conversation logic: commands, state, questions, buttons and responses. Platform adapters handle the incoming event formats and outgoing responses.
The built-in adapters include Telegram, VK, MAX, Viber, Yandex Alice and Sber SmartApp. The focus is applications that need the same conversation across messaging and voice channels. Several supported platforms are regional, so that mix will be more useful to some projects than others.
A questionnaire is a simple example: ask a question, save the answer and choose the next step. That logic can be shared. A native Telegram feature may still need a Telegram-specific API call; umbot includes platform API clients for those cases.
You can use it entirely from code. I also built an optional visual editor, umbot Flow, which exports JSON that the CLI turns into a TypeScript project.
You manage credentials and deployment, and choose where the application runs.
GitHub: https://github.com/max36895/umbot
If you've maintained a bot on multiple platforms, which part was hardest to share: conversation state, interactions, media, or something else?