> For the complete documentation index, see [llms.txt](https://docs.kangaroodev.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kangaroodev.net/product-docs/addons-discord-bot/features.md).

# Features

### 1. Calendar Commands

#### 1.1. `/calendar add`

* Description: Adds a new task to the panel calendar.
* Syntax:\
  `/calendar add task:<title> date:<YYYY-MM-DD> [time:<HH:MM>] [color:<hex or name>]`

<figure><img src="/files/rqG5df6CwnnOCfOl9xDr" alt=""><figcaption></figcaption></figure>

* Behavior:
  * Creates a calendar entry for the specified date.
  * Time and color are optional.
  * Returns a confirmation embed showing the created task and its scheduled time.

#### 1.2. `/calendar check`

* Description: Lists tasks scheduled for a given day.
* Syntax:\
  `/calendar check [date:<YYYY-MM-DD>]`
* Behavior:
  * If `date` is omitted, it shows tasks for today.
  * First sends a small header message (with the selected date).
  * Then sends one embed per task, each containing:

    * Task title
    * When it is scheduled
    * Task ID in the footer (for easier debugging / support)

    <figure><img src="/files/jJ0Yawze8gW1CoZ64g8I" alt=""><figcaption></figcaption></figure>

#### 1.3. `/calendar remove`

* Description: Removes a selected calendar task via an interactive menu.
* Syntax:\
  `/calendar remove [date:<YYYY-MM-DD>]`
* Behavior:
  * If `date` is omitted, defaults to today.
  * Fetches all tasks for that date and shows them in a select menu.
  * You choose one entry from the menu; the bot deletes the selected task and confirms the deletion.

### 2. Settings – `/set` Commands

#### 2.1. `/set admin`

* Description: Grants admin role and full permissions to a user in the panel.
* Syntax:\
  `/set admin user:<email or Discord ID>`
* Behavior:

  * Looks up the user by email or stored Discord ID.
  * Changes their role to `admin`.
  * Grants full permissions to all relevant modules.
  * Returns an embed confirming the change.

  <figure><img src="/files/oelAKePnVglJ1ELms0VV" alt=""><figcaption></figcaption></figure>

#### 2.2. `/set removeadmin`

* Description: Revokes admin role.
* Syntax:\
  `/set removeadmin user:<email or Discord ID>`
* Behavior:
  * Changes the user’s role back to `client`.
  * Clears explicit permission overrides.
  * Returns an embed with confirmation.

#### 2.3. `/set perms`

* Description: Sets permission level for a single module for a given user.
* Syntax:\
  `/set perms user:<email or Discord ID> module:<module> level:<none/view/create/full>`
* Modules (examples):

  * `payments`, `calendar`, `lists`, `customers`, `commissions`, `hub`, `log`, `forms`, `formsSettings`, `database`

  <figure><img src="/files/vh7DVQwVkWGJBNmiARPq" alt=""><figcaption></figcaption></figure>
* Behavior:
  * Updates only the specified module’s permissions.
  * Returns an embed summarizing:
    * User identifier
    * Module
    * New permission level

#### 2.4. `/set log`

* Description: Configures webhooks for panel logs and calendar reminders.
* Syntax:\
  `/set log target:<logs/reminder> channel:<#channel>`
* Behavior:

  * Validates that the chosen channel is a normal text channel.
  * Creates a Discord webhook in that channel.
  * Stores the webhook URL in the panel settings as:
    * `logs` – for audit / activity logs.
    * `reminder` – for calendar task reminders.
  * Responds with an embed confirming which channel is now used.

  <figure><img src="/files/kDLzj7hk812xUqmCpULK" alt=""><figcaption></figcaption></figure>

### 3. Payments

#### 3.1. `/invoice`

* Description: Creates a one-time payment link via Stripe or PayPal.
* Syntax:\
  `/invoice provider:<stripe/paypal> amount:<number> currency:<code> name:<customer name> email:<customer email> description:<text>`
* Behavior:
  * For Stripe:
    * Creates a one-time payment link / Checkout session.
  * For PayPal:
    * Creates a PayPal payment link.
  * Returns a message or embed with the payment URL.

#### 3.2. `/subscription`

* Description: Creates a subscription payment link (recurring).
* Syntax:\
  `/subscription provider:<stripe/paypal> amount:<number> currency:<code> name:<customer name> email:<customer email> description:<text>`
* Behavior:
  * For Stripe:
    * Creates a recurring subscription link.
  * For PayPal:
    * Creates a subscription / billing agreement link.
  * Returns the generated URL in the response.

> The panel will also send DM notifications to configured admins when a payment is marked as `paid`.

<figure><img src="/files/lQxZay2OfPQLIEfLAy0Y" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/URn411UUNKj9J6tjXuBJ" alt="" width="411"><figcaption></figcaption></figure>

### 4. Broadcasts & Notifications

#### 4.1. `/broadcast`

* Description: Sends a broadcast similar to the “Broadcast Center” in the panel.
* Syntax:\
  `/broadcast message:<content> [title:<title>] [send_email:<true/false>] [push_panel:<true/false>] [send_dm:<true/false>]`
* Behavior:
  * At least one of `send_email`, `push_panel`, `send_dm` must be `true`.
  * Channels:
    * `send_email` – sends emails to clients via the panel backend.
    * `push_panel` – creates standard panel notifications.
    * `send_dm` – sends Discord DMs to users who have their Discord accounts linked.
  * Responds with an embed summarizing:
    * Which channels were used (Email, Panel notifications, Discord DMs).
    * How many clients were reached (based on API response, when available).

#### 4.2. Automatic DM notifications

Even without using `/broadcast`, the panel is configured to forward many types of notifications to Discord DMs when possible, e.g.:

* Broadcast alerts.
* Permission or project changes.
* Application status changes (accepted / denied / submitted).
* Payment status updates for admins.

The backend calls a small HTTP endpoint exposed by the bot, which then sends private messages to the relevant Discord users.

### 5. Accounts & Authentication

#### 5.1. `/register`

* Description: Creates a new local account in the panel (email + password).
* Syntax:\
  `/register email:<email> password:<password> first_name:<first name> last_name:<last name>`
* Behavior:
  * Validates the password length (minimum 6 characters).
  * Creates a regular local user in the panel database.
  * Returns an embed confirming that the account was created and can be used to log in.

<figure><img src="/files/pBFUsTmavkcxnwfUy9mc" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/tSRoYCucIX21sT5TeuGH" alt=""><figcaption></figcaption></figure>

#### 5.2. `/reset-password`

* Description: Sends a password reset link to the user’s email.
* Syntax:\
  `/reset-password email:<email>`
* Behavior:
  * Triggers the same password reset flow as in the panel UI (e.g. from `customer.html`).
  * If a local account with that email exists, the panel sends a reset email.
  * The bot responds with an embed that explains that, if the account exists, a reset mail has been sent.

### 6. User Information

#### 6.1. `/user info`

* Description: Displays detailed information about a user in multiple sections, navigated with buttons.
* Syntax:\
  `/user info user:<email or Discord ID>`
* Behavior:

  * Looks up the user in the panel by email or Discord ID.
  * Sends an initial Overview embed including:
    * Username
    * Email
    * Discord ID
    * Role
    * Authentication type (Discord OAuth vs local email/password)
    * Created at / last updated dates
  * Under the embed there are buttons:
    * Overview – returns to the basic view.
    * Permissions – shows all module permissions in a single embed (e.g. `payments → FULL`, `calendar → VIEW`, etc.).
    * Assignments – shows:
      * Boards / projects the user is assigned to.
      * Commissions with basic status (service, status, phase, total paid / total value).
  * Button interactions edit the same message (no spam), replacing the embed with the selected section.

  <figure><img src="/files/TtVpHJ1gQp3V8EOVZROZ" alt=""><figcaption></figcaption></figure>

### 7. Theming

* The bot automatically fetches the primary color from the panel’s settings (the same color used in `hub.html`).
* All embeds use this primary theme color, so the look of the bot matches the panel.
* When you change the primary color in the panel and restart the bot, embeds will update to the new color.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kangaroodev.net/product-docs/addons-discord-bot/features.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
