## Provided plugins ### Development - `ping`: Say `ping` to get response with time elapsed. ### Fun and entertainment - Lo quito: What happens when you say _"lo quito"_...? (Spanish pun) - Dice: Put `!dice` and wathever roll you want to perform. - Coin: Flip a coin and get heads or tails. ### Utility - Help: Shows available commands when you type `!help`. Lists all enabled plugins for the current channel organized by category with their descriptions and usage instructions. - Remind Me: Reply to a message with `!remindme ` to set a reminder. Supported duration units: y (years), mo (months), d (days), h (hours), m (minutes), s (seconds). Examples: `!remindme 1y` for 1 year, `!remindme 3mo` for 3 months, `!remindme 2d` for 2 days, `!remindme 3h` for 3 hours. The bot will mention you with a reminder after the specified time. - Search and Replace: Reply to any message with `s/search/replace/[flags]` to perform text substitution. Supports flags: `g` (global), `i` (case insensitive), `n` (regex pattern). Example: `s/hello/hi/gi` replaces all occurrences of "hello" with "hi" case-insensitively. - Gallery-DL Downloader: Reply to a message containing a link with `!gallerydl` (or send `!gallerydl ` directly) to download the media at that link using the [gallery-dl](https://github.com/mikf/gallery-dl) CLI and have it posted back as a reply. **Restricted to allowed users only — no one is allowed by default.** Configure the comma-separated `allowed_users` list (Telegram `@username`, with or without the leading `@`) through the admin interface, globally or per channel. An optional `gallery_dl_path` option sets the executable path (default `gallery-dl` on PATH). Media upload is currently supported on Telegram only, and the `gallery-dl` binary must be installed on the host running the bot. ### Security - Domain Blocker: Blocks messages containing links from specified domains. Configure it per channel with a comma-separated list of domains to block. When a message contains a link matching any of the blocked domains, the bot will notify that the message contained a blocked domain. This plugin requires configuration through the admin interface. ### Social Media - Twitter Link Expander: Automatically converts twitter.com and x.com links to alternative domain links and removes tracking parameters. This allows for better media embedding in chat platforms. Configure with `domain` option to set replacement domain (default: fxtwitter.com). - Instagram Link Expander: Automatically converts instagram.com links to alternative domain links and removes tracking parameters. This allows for better media embedding in chat platforms. Configure with `domain` option to set replacement domain (default: ddinstagram.com). ## Plugin configuration Plugins that require configuration (e.g. Domain Blocker, Twitter/Instagram Link Expander) can be configured in two places through the admin interface: - **Global configuration** — app-wide defaults for a plugin, set from the **Plugins** page via the "Configure" button (`/admin/plugins/config/`). These values apply to every channel that has the plugin enabled. - **Per-channel configuration** — set from a channel's plugin list. A channel inherits the global configuration and only overrides the values you fill in. The effective configuration a plugin receives for a message is the global configuration with the channel's non-empty values layered on top. **Leaving a channel field blank makes it inherit the global value** for that field, so you only need to set values globally once and override per channel where needed.