Giter Site home page Giter Site logo

cybercog / telegram-devpoker-bot Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 3.0 47 KB

Planning Poker (Scrum Poker) for Agile software development teams. The bot allows you to introduce a consensus-based, gamified technique of task estimating into Telegram group chats.

License: MIT License

Dockerfile 0.46% Python 98.53% Shell 1.01%
telegram telegram-bot chat-bot chat-bots planning-poker planning-poker-game scrum-poker telegram-bots collaboration estimating planning-tool software-development backlog grooming backlog-refinement

telegram-devpoker-bot's People

Contributors

antonkomarev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

telegram-devpoker-bot's Issues

Move environment variables to .env file

Right now bot is running using shell command:

DEVPOKER_BOT_API_TOKEN=11111424242:some-token ./run.sh

Need to move DEVPOKER_BOT_API_TOKEN variable to .env file in project root directory. To make it run like:

./run.sh

Add game phases

Phases:

  • Initiating phase
  • Voting phase
  • Result phase

Initiating phase

  • ready to start
  • let's discuss
  • start game (initiator only)

Voting phase

  • points
  • special cases
  • restart (initiator only)
  • end game (initiator only)

Result phase

  • re-vote (clone procedure, hide keyboard of source procedure)

Update system message text on editing facilitator message text

When source message text is edited we should edit it bot's system messages with this facilitator_message_id.

Need to choose between implementations:

  • update all messages related to facilitator_message_id
  • update only active sessions related to facilitator_message_id

Need to update Game & GameSession system messages.

Add planning sessions

Right now Game entity is what should be renamed to Session. And Game should become container of the Sessions.

There might be only one active Game in one Chat.

  • Game start
  • Game session attach
  • Game end
  • Game statistics

Planning Game Start

Command /game {game_name} starts game with provided name.

When game is starting, Bot sends a message:

Planning poker started: {game_name}

If {game_name} is empty — default name is (no game name).

If there is active game Bot should say that Game already started and you can't start a new one unless it's ended.

Planning Game Process

If Game in Chat is active — all Sessions will have game_id related to active Game.

If source message text is edited active Game message should be renamed as well.

Planning Game End

Command /game_end ends currently started Game.

When Game ends — Bot sends statistics:

  • Planning poker ended: {game_name}
  • Estimated topics count: {estimated_topics_count}
  • Canceled discussions count: {canceled_topics_count} (if count > 0)

Message should be sent with disable_web_page_preview=True.

Improve naming

Make naming consistent.

Game — is a planning poker game. Game contains of game sessions. Each session belongs to a topic (issue/task).

Game session phases

  • discussion
  • estimation
  • resolution

Initiator operations

  • start_estimation
  • end_estimation
  • clear_votes
  • re_estimate

Callbacks

  • discussion-vote-click-{topic_message_id}-{vote}
  • estimation-vote-click-{topic_message_id}-{vote}
  • {operation}-click-{topic_message_id}
    • start_estimation-click-{topic_message_id}
    • end_estimation-click-{topic_message_id}
    • clear_votes-click-{topic_message_id}
    • re_estimate-click-{topic_message_id}

Class types

  • Game
  • GameSession
  • GameRegistry
  • DiscussionVote
  • EstimationVote

Send same message raises an API error

aiotg.bot.BotApiError: Bad Request: message is not modified: specified new message content and reply markup are exactly the same as a current content and reply markup of the message

Normalize Facilitator in database

Need to store users in separate database table and pass only facilitator_user_id and player_user_id in game_session and game tables.

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.