Skip to content

Commit

Permalink
first draft. still need to add a few details and screenshots, but thi…
Browse files Browse the repository at this point in the history
…s captures the outline and highlevel
  • Loading branch information
Paul Philion committed May 7, 2024
1 parent 87ef398 commit 3d4d437
Showing 1 changed file with 136 additions and 65 deletions.
201 changes: 136 additions & 65 deletions docs/netbot-usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,104 +3,78 @@
Netbot provides a series of slash-commands to support tickets and users in Redmine.

The commands are grouped:
* `/scn` provides commands to manages users and organization in Redmine
* `/tickets` provides ticket management and queries
* `/scn` provides commands to manages users and organization in Redmine

## Use Cases

## SCN Commands

Any SCN commands that manage users allow for "self-management", and come in parallel forms:
* `/scn <command> <options>` and
* `/scn <command> <options> @member`
### Create A New Ticket

The first form assumes the @member is the person executing the command. The second form assumes the invoker is an established Redmine user with admin priviledges, and is executing the command on behalf of the member.
To create a new ticket to capture

For example, if a normal user @bob was to invoke `/scn join nu-team` it would result in Bob joining nu-team in Redmine. If an @admin user invoked `/scn join nu-team @bob` it would also result in Bob joining the team.
For example, to create a new ticket to "Change the water filter":

### `/scn add` - Add a Discord user to Redmine
/ticket new Change the water filter

This command creates a linkage between a Discord user ID and a Redmine user ID. Any commands issued by a links Discord user will be executed on Redmine as if they were performed by that user.
[screen shot]

To add you own Discord user, use:
```
/scn add [redmine-login]
```
This will create a new ticket with the title "Change the water filter", and create a new Discord thread to manage discussion of the ticket.

If the user [redmine-login] exists in Redmine, the Discord member invoking the command will be associated with it.
-> creating in specific channels

If the user [redmine-login] does not exist in Redmine, a modal dialog will popup in Discord to create a new user, requesting first name, last name and email. A new Redmine user will be created with these parameters and linked to the invoking Discord user.
-> mappings for teams

An administrator can also use `/scn add` to add other Discord users to Redmine:
```
/scn add [redmine-login] @member
```

This will behave as above, except that all operations will be performed as if by @member.
### Find Tickets

### `/scn teams` - List teams
#### Finding *Your* Tickets
Query, based on "me", teams, etc.

To list all the teams, and their members, configured on Redmine:
```
/scn teams
```
/ticket query me

To display only a single team `teamname`
```
/scn teams teamname
```
[screen shot]

### `/scn join` - Join a team
This will offer a list of tickets, based on the teams you are part of and tickets that are assigned to you directly.

To join the team `teamname` yourself:
```
/scn join teamname
```
#### Finding Other Tickets
Query, based on a specific term related to the tickets you're interested in, for example "water"

An admin can add other people to teams, for example adding @blanche to `teamname`:
```
/scn join teamname @blanche
```
/ticket query water

### `/scn leave` - Leave a team
[screen shot]

To leave team `teamname`:
```
/scn leave teamname
```
This will return an ticket related that contain the term "water".

An admin can remove people from teams:
```
/scn leave teamname @blanche
```

### `/scn block` - Block a user
### Work On A Ticket

This command is designed to manage external users, not Discord users.
Once you've selected a ticket to work on, assign it to yourself with:

SCN Redmine supports a "block" function that will reject (but still record) all tickets from a specific email.
/ticket assign 42

This command exposes the "block" function in Discord. To block the user with email `[email protected]`, use:
```
/scn block [email protected]
```
This will assign ticket ID 42 to you (the Discord user).

### `/scn unblock` - Unblock a user
When you're ready to start work:

This command is designed to manage external users, not Discord users.
/ticket progress 42

To unblock a user with email [email protected]:
```
/scn unblock [email protected]
```
This will mark ticket "42" in-progress.

> [!NOTE]
> This will remove the user from the blocked team, but will not "unreject" the tickets created by that email. New email will create normal tickets.
Assuming this ticket was created via the Discord bot, there will be an associated Discord thread: "Ticket 42: Change the water filter". Any comments in this thread will be reflected back to the redmine ticket, so it can be easy way to update progress especially with the Discord app on your smartphone.

### `/scn blocked` - List the blocked users
In this example, you might might updates like:
* Confirmed the filter model we need and that we have one on hand.
* Starting install. Water will be off for a few minutes.
* Install complete. Water is running and new filter is operating as expecting.

List the blocked users.
Once the work is done and everything checks out, resolve the ticket:

Should be the same as `/scn teams blocked`.
/ticket resolve 42

This will mark the ticket "resolved", so everyone knows the work is taken care of.

NOTE: All the /ticket commands for one ticket could be derived from the threat name.


## Ticket Commands
Expand All @@ -115,6 +89,7 @@ The `/ticket` slash command is used to information about tickets in Redmine. A n
* progress
* resolve


### `/ticket query me` - Query my tickets

The the list of tickets for *me* (you, the reader) to work on.
Expand Down Expand Up @@ -204,3 +179,99 @@ Mark ticket *ticket-id* resolved.
/ticket thread 787
```
will mark ticket 787 resolved. Well done!


## SCN Commands

Any SCN commands that manage users allow for "self-management", and come in parallel forms:
* `/scn <command> <options>` and
* `/scn <command> <options> @member`

The first form assumes the @member is the person executing the command. The second form assumes the invoker is an established Redmine user with admin priviledges, and is executing the command on behalf of the member.

For example, if a normal user @bob was to invoke `/scn join nu-team` it would result in Bob joining nu-team in Redmine. If an @admin user invoked `/scn join nu-team @bob` it would also result in Bob joining the team.

### `/scn add` - Add a Discord user to Redmine

This command creates a linkage between a Discord user ID and a Redmine user ID. Any commands issued by a links Discord user will be executed on Redmine as if they were performed by that user.

To add you own Discord user, use:
```
/scn add [redmine-login]
```

If the user [redmine-login] exists in Redmine, the Discord member invoking the command will be associated with it.

If the user [redmine-login] does not exist in Redmine, a modal dialog will popup in Discord to create a new user, requesting first name, last name and email. A new Redmine user will be created with these parameters and linked to the invoking Discord user.

An administrator can also use `/scn add` to add other Discord users to Redmine:
```
/scn add [redmine-login] @member
```

This will behave as above, except that all operations will be performed as if by @member.

### `/scn teams` - List teams

To list all the teams, and their members, configured on Redmine:
```
/scn teams
```

To display only a single team `teamname`
```
/scn teams teamname
```

### `/scn join` - Join a team

To join the team `teamname` yourself:
```
/scn join teamname
```

An admin can add other people to teams, for example adding @blanche to `teamname`:
```
/scn join teamname @blanche
```

### `/scn leave` - Leave a team

To leave team `teamname`:
```
/scn leave teamname
```

An admin can remove people from teams:
```
/scn leave teamname @blanche
```

### `/scn block` - Block a user

This command is designed to manage external users, not Discord users.

SCN Redmine supports a "block" function that will reject (but still record) all tickets from a specific email.

This command exposes the "block" function in Discord. To block the user with email `[email protected]`, use:
```
/scn block [email protected]
```

### `/scn unblock` - Unblock a user

This command is designed to manage external users, not Discord users.

To unblock a user with email [email protected]:
```
/scn unblock [email protected]
```

> [!NOTE]
> This will remove the user from the blocked team, but will not "unreject" the tickets created by that email. New email will create normal tickets.
### `/scn blocked` - List the blocked users

List the blocked users.

Should be the same as `/scn teams blocked`.

0 comments on commit 3d4d437

Please sign in to comment.