Following up on the code that set the nickname and status via bash function, I wanted to do the same using a slash command
Here’s the code in PHP
<?php require 'vendor/autoload.php'; use GuzzleHttp\Client; $client = new Client(['base_uri' => 'https://chat.example.com/api/v4/']); $SLASHCMD_TOKEN = 'GET YOUR TOKEN'; $ADMIN_TOKEN = 'GET ADMIN TOKEN'; if (isset($_POST['token']) && $_POST['token'] == $SLASHCMD_TOKEN && $_POST['command'] == '/status' && !empty($_POST['text'])) { $user_id = $_POST['user_id']; $text = $_POST['text']; $params = preg_split('/("[^"]*")|\h+/', $text, 2, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); if ($params && count($params) > 0) { $nickname = $params[0]; $status = (count($params) == 2) ? $params[1] : ''; } $response = $client->request('PUT', "users/$user_id/patch", ['headers' => ['Authorization' => "Bearer " . $ADMIN_TOKEN], 'json' => ['nickname' => $nickname]]); if (in_array($status, array( 'dnd', 'online', 'offline', 'away' ))) { $response = $client->request('PUT', "users/$user_id/status", ['headers' => ['Authorization' => "Bearer " . $PERSONAL_TOKEN], 'json' => ['status' => $status]]); } }
seems to work for me.
You’ll need to follow the instructions in the documentation to create the command on the server. Make sure to save the tokens in a safe place as usual.