Update 'Roadmap'

projectmoon 2020-11-30 20:22:54 +00:00
parent 93aec5ed34
commit 7640f238d6
1 changed files with 36 additions and 52 deletions

@ -1,53 +1,37 @@
# Roadmap # Roadmap
This is the roadmap for functionality to be added to the dicebot. Features are listed in order of planned implementation, mostly because at this state of development, the bigger features require implementation of less exciting groundwork. This is the roadmap for functionality to be added to the dicebot. Features are listed in order of planned implementation, mostly because at this state of development, the bigger features require implementation of less exciting groundwork.
## Immediate ## Immediate
What is currently upcoming. What is currently upcoming.
| Feature | Description | Depends on | | Feature | Description | Depends on |
| --------------- | --------------- | --------------- | | --------------- | --------------- | --------------- |
| **Room State Management** | Bot keeps track of metadata relating to rooms it's in. | N/A | | **Private Commands** | Manage all bot functionality from a private room | Room State Management |
| **Private Commands** | Manage all bot functionality from a private room | Room State Management |
### Room State Management ### Private Commands
Room state management involves the dice bot keeping track of what rooms it is in and what users are in them. This feature is 100% invisible to the end user, but is a necessary prerequisite for managing the dicebot in a direct message. Allow the user to manage the dicebot in a direct message. The user should be able to tell the bot which room to manage, and any commands executed in the direct message would be applied to the given room (until the user switches to another room). Only certain commands would be allowed in the direct message, namely anything involved with creating or modifying data (variables, etc).
* One-time sync of the dicebot's current rooms into the database (sort of a migration, but technically not?) This will require some internal changes:
* When a user joins or leaves a room, add/remove them to/from a users list for the room.
* Probably useful to maintain a two-way relation: room -> list of users, user -> list of rooms. * Dicebot must now be aware of what room a user is managing in a direct message. This may be the first introduction of a proper state struct for users in the database. Possibly new keyspace `state`, with just a key name of username.
* Commands must be aware of if they are being executed in a direct message or a regular room. Probably easiest to add this property to the `Context` object.
This feature will be further expanded as necessary.
## Intermediate
Database implementation:
Things that are easier to implement, but not yet scheduled.
* New keyspace: `rooms`.
* `rooms|by_user|<username>` = `list of user's rooms`. | Feature | Description | Depends on |
* `rooms|list` = `list of dicebot's rooms`. | --------------- | --------------- | --------------- |
| **Resource Counting** | Creation of counters that can go up and down. System agnostic. | N/A |
### Private Commands | **CofD Game Management** | Management of slightly complex CofD things like health. | N/A |
Allow the user to manage the dicebot in a direct message. The user should be able to tell the bot which room to manage, and any commands executed in the direct message would be applied to the given room (until the user switches to another room). Only certain commands would be allowed in the direct message, namely anything involved with creating or modifying data (variables, etc). ## Future
This will require some internal changes: Things in the far future that require a lot of groundwork or other features to be finished first.
* Dicebot must now be aware of what room a user is managing in a direct message. This may be the first introduction of a proper state struct for users in the database. Possibly new keyspace `state`, with just a key name of username. | Feature | Description | Depends on |
* Commands must be aware of if they are being executed in a direct message or a regular room. Probably easiest to add this property to the `Context` object. | --------------- | --------------- | --------------- |
## Intermediate
Things that are easier to implement, but not yet scheduled.
| Feature | Description | Depends on |
| --------------- | --------------- | --------------- |
| **Resource Counting** | Creation of counters that can go up and down. System agnostic. | N/A |
| **CofD Game Management** | Management of slightly complex CofD things like health. | N/A |
## Future
Things in the far future that require a lot of groundwork or other features to be finished first.
| Feature | Description | Depends on |
| --------------- | --------------- | --------------- |
| **Character Sheet Integration** | Integrate with an external online character sheet service. | Existence of said service, many dice bot features. | | **Character Sheet Integration** | Integrate with an external online character sheet service. | Existence of said service, many dice bot features. |