mmcli/README.md

71 lines
2.6 KiB
Markdown

# mmcli
Interact with Mattermost on the command line and in scripts
## Features
- Send, edit, delete messages and replies
- Get all messages (`mmcli cat`) or last messages (`mmcli tail -n 200`) in a channel
- Watch channels for new messages (`mmcli tail -f`)
- List channels, watch list of channels for changes (`mmcli ls -f`)
- Add and remove emoji reactions, get list of custom emoji on server
- Set custom status
- Outputs either team, channel and user *names* (default) or *IDs* (`--ids`)
- JSON or TSV output
## Usage
```
mmcli [-h] [-i] [--format {tsv,json}] [--server SERVER] action [subarguments..]
options:
-h, --help show this help message and exit
-i, --ids use IDs instead of names
--format {tsv,json} output format; only json has all fields; default: json
--server SERVER e.g.: mattermost.example.org; example.org/mattermost; envvar: MM_SERVER
actions:
login retrieve an access token
cat list messages in channel
tail list newest messages in channel
ls list channels
send send message(s)
rm delete message(s)
edit edit message(s)
addreaction add emoji reaction to a message
removereaction remove emoji reaction from a message
listcustomemoji list all custom emoji on the server
status update user status
customstatus update custom user status (emoji and message)
lastread last read message in channel; will be null if all messages are read
For further help, use `mmcli <action> -h`.
```
You can request an access token with `mmcli login`, then provide it to future incantations of mmcli by setting the environment variable MM_ACCESSTOKEN.
Where a "URL name" is required, "id:" plus an ID can also be used instead. So these could both be valid:
- town-square
- id:123abc456def789ghi012jkl34
Hint: JSON output can be filtered with jq(1).
## Installation
With pip or pipx:
```
git clone https://git.zeus.gent/midgard/mmcli
pipx install ./mmcli
```
## Development
To create a virtualenv and install the dependencies in it:
```
tools/create_venv.sh
```
Activate the virtualenv with `source venv/bin/activate`. To make this easier, you could create
an [alias][] `alias venv='source venv/bin/activate'` in your shell.
[alias]: https://www.computerworld.com/article/2598087/how-to-use-aliases-in-linux-shell-commands.html
If you introduce dependencies, list them in `pyproject.toml` under `dependencies`, and run
`tools/update_requirements.sh`.