Giter Club home page Giter Club logo

tyzenhaus's Introduction

Tyzenhaus logo

Product Hunt link Hacker News link Reddit link vc.ru link

Tyzenhaus is a shared expenses tracking bot.

Whether you are a group of travelers ✈️, roommates 🏠, or just friends 👫, Tyzenhaus will help you settle up your debts in three simple steps:

  1. Invite Tyzenhaus into your chat

  2. Track shared expenses with Tyzenhaus

  3. Tyzenhaus will simplify the debts

Acknowledgements


Crowdin

tyzenhaus's People

Contributors

madhead avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

jorik041 by-onex

tyzenhaus's Issues

Promotion

Implement ChatCurrenciesService

It should read all the transactions for a given chat, group them by currency and sort (desc) by the number of transactions. Then N top currencies should be returned. 3-5 maybe more, need to check that in different clients.

/reg command to self-register in a group

  • Welcome message should ask users to invoke a /reg command
  • Reg command should be processed and users should be saved into "members" for this group
  • If the bot sees new members (admin option) it should ask them to register after they are added

Basic analytics

  • Group sizes
  • Who added
  • Group last active
  • Languages (language code for users)
  • Transactions, counters

Basic group expenses tracking

As a Tyzenhaus bot user I want to be able to add the bot to the group to start tracking group expenses. Basic expense tracking must include support of:

  • Single payer
  • Multiple users being paid for
  • Currencies
  • Purpose (text)

I want to be able to ask for my debts stats at any time.

Debt settlement

Bugs found during α

  • /lang shouldn't have any state
  • /expense should check user ids on actions
  • /expense should not allow zeros or empty list of participants
  • Non-participants should not be allowed to create transactions
  • Currencies must be limited to 120-128 chars (current DB limit)
  • There should be a fallback in case the user leves the chat after tracking some transactions
  • When a new user is added to the group AFTER everybody else registered it could break the bot:
    java.util.NoSuchElementException: Collection contains no element matching the predicate.
        at me.madhead.tyzenhaus.core.telegram.updates.expense.DebtsCommandUpdateProcessor$process$debtsMessage$1.invoke(DebtsCommandUpdateProcessor.kt:114) ~[tyzenhaus-core-0.0.1.jar:?]
        at me.madhead.tyzenhaus.core.telegram.updates.expense.DebtsCommandUpdateProcessor$process$debtsMessage$1.invoke(DebtsCommandUpdateProcessor.kt:88) ~[tyzenhaus-core-0.0.1.jar:?]
        at kotlin.text.StringsKt__AppendableKt.appendElement(Appendable.kt:85) ~[kotlin-stdlib-1.5.10.jar:1.5.10-release-890 (1.5.10)]
        at kotlin.collections.CollectionsKt___CollectionsKt.joinTo(_Collections.kt:3344) ~[kotlin-stdlib-1.5.10.jar:1.5.10-release-890 (1.5.10)]
        at kotlin.collections.CollectionsKt___CollectionsKt.joinToString(_Collections.kt:3361) ~[kotlin-stdlib-1.5.10.jar:1.5.10-release-890 (1.5.10)]
        at kotlin.collections.CollectionsKt___CollectionsKt.joinToString$default(_Collections.kt:3360) ~[kotlin-stdlib-1.5.10.jar:1.5.10-release-890 (1.5.10)]
        at me.madhead.tyzenhaus.core.telegram.updates.expense.DebtsCommandUpdateProcessor.process(DebtsCommandUpdateProcessor.kt:85) ~[tyzenhaus-core-0.0.1.jar:?]
        at me.madhead.tyzenhaus.core.telegram.updates.expense.DebtsCommandUpdateProcessor$process$1.invokeSuspend(DebtsCommandUpdateProcessor.kt) ~[tyzenhaus-core-0.0.1.jar:?]
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) [kotlin-stdlib-1.5.10.jar:1.5.10-release-890 (1.5.10)]
    
  • confirmation in /expense should have "Cancel" option
  • it shouldn't be allowed to select participants in another user's transaction

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.