spreed/docs/commands.md

2.9 KiB

Chat commands

Admin defined commands

For security reasons commands can only be added via the command line. ./occ talk:command:add --help gives you a short overview of the required arguments, but they are explained here in more depth:

"Add command" arguments

Argument Allowed chars Description
cmd [a-z0-9] The keyword the user has to type to run this command (min. 1, max. 64 characters)
name * The author name of the response that is posted by the command (min. 1, max. 64 characters)
script * Actual command that is being ran. The script must be executable by the user of your webserver. See the parameter table below for options. The script is invoked with --help as argument on set up, to check if it can be executed correctly.
response 0-2 Who should see the response: 0 - No one, 1 - User who executed the command, 2 - Everyone
enabled 0-3 Who can use the command: 0 - No one, 1 - Moderators of the room, 2 - Logged in users, 3 - Everyone

Script parameter

Parameter Description
{ROOM} The token of the room the command was used in
{USER} ID of the user that called the command
{ARGUMENTS} Everything the user write after the actual command
{ARGUMENTS_DOUBLEQUOTE_ESCAPED} … but with double quotes " escaped.

Example

  • /path/to/calc.sh:

    while test $# -gt 0; do
      case "$1" in
        --help)
          echo "/calc - A Nextcloud Talk chat wrapper for gnome-calculator"
          echo " "
          echo "Simple equations: /calc 3 + 4 * 5"
          echo "Complex equations: /calc sin(3) + 3^3 * sqrt(5)"
          exit 0
          ;;
        *)
          break
          ;;
     esac
    done
    
    set -f
    echo "$@ ="
    echo $(gnome-calculator --solve="$@")
    

    Please note, that your command should also understand the argument --help. It should return a useful description, the first line is also displayed in a list of all commands when the user just types /help.

  • ./occ command used to add the command:

    ./occ talk:command:add calculator calculator "/path/to/calc.sh \"{ARGUMENTS_DOUBLEQUOTE_ESCAPED}\" {ROOM} {USER}" 1 3
    
  • User input by user my user id in the chat of room index.php/call/4tf349j:

    /calculator 1 + 2 + 3 + "hello"
    
  • Executed shell command:

    /path/to/calc.sh "1 + 2 + 3 + \"hello\"" '4tf349j' 'my user id'
    

Aliases

It is also possible to define an alias for a command. This allows e.g. to get the /help command also with the german word /hilfe.

An alias for the /calculator command from above could be created using the following command:

./occ talk:command:add calc calculator "alias:calculator" 1 3

Now /calculator 1 + 2 + 3 and /calc 1 + 2 + 3 result in the same message.

Note: The enabled and response flag of the alias are ignored and the flags of the original command will be used and respected.