Configuration
config.yml controls Discord delivery, SpigotMC scraping, plugin targets, scan timing, and state storage.
When the worker starts, it first looks for config.yml in the current working directory. If it is not found there, it falls back to a bundled config.yml resource.
Full Example
Section titled “Full Example”discord: webhook-url: "https://discord.com/api/webhooks/your-webhook-id/your-webhook-token" username: "Spigot Sales Notifier" avatar-url: "https://i.imgur.com/nigdPoy.png"
spigot: cookie: "xf_session=...; xf_user=...; xf_tfa_trust=..." request-delay-ms: 800 plugins: - name: "Plugin Name" buyer-list-url: "https://www.spigotmc.org/resources/resource-name.resource-id/buyers"
scan: interval-minutes: 60 notify-existing-on-first-run: false state-file: "data/seen-sales.json"Discord Settings
Section titled “Discord Settings”| Key | Type | Description |
|---|---|---|
discord.webhook-url | String | Discord webhook URL used to send sale embeds. |
discord.username | String | Webhook display name shown in Discord. |
discord.avatar-url | String | Optional webhook avatar URL. Leave it blank if you want Discord to use the webhook’s default avatar. |
The worker sends Discord embeds in chunks of up to 10 embeds per webhook message. Mentions are disabled with allowed_mentions, so buyer names or plugin names cannot trigger role/user pings.
Sale notifications are rendered as Discord embeds. Each embed links the buyer profile when SpigotMC exposes one, links the configured plugin buyer page, displays the sale price and currency, and places the purchase time in the footer using the server’s local timezone.
Spigot Settings
Section titled “Spigot Settings”| Key | Type | Description |
|---|---|---|
spigot.cookie | String | SpigotMC authentication cookie. Must have access to the configured premium buyer pages. |
spigot.request-delay-ms | Long | Delay between paginated buyer-list requests. |
spigot.plugins | List | Resource targets to monitor. At least one valid target is required. |
Each plugin target has:
| Key | Type | Description |
|---|---|---|
name | String | Friendly plugin name shown in Discord and used as the state key. |
buyer-list-url | String | SpigotMC buyers page URL for that premium resource. |
spigot: plugins: - name: "Advanced Parkour" buyer-list-url: "https://www.spigotmc.org/resources/advanced-parkour.00000/buyers" - name: "Santa Says" buyer-list-url: "https://www.spigotmc.org/resources/santa-says.00000/buyers"Scan Settings
Section titled “Scan Settings”| Key | Type | Description |
|---|---|---|
scan.interval-minutes | Long | Delay between continuous scans. |
scan.notify-existing-on-first-run | Boolean | Whether the first scan should send notifications for already-existing buyers. |
scan.state-file | String | Path to the JSON file that stores seen buyers. Relative paths are resolved from the working directory. |
First-Run Behavior
Section titled “First-Run Behavior”By default:
scan: notify-existing-on-first-run: falseThe first scan records all currently visible buyers and sends no Discord messages. Later scans notify only when new buyers appear.
Set it to true if you intentionally want the first run to notify every visible buyer.
Private Values
Section titled “Private Values”Keep these values private:
discord.webhook-urldiscord.avatar-urlif it points to a private or temporary assetspigot.cookie- the generated state file if it contains buyer history you consider private
Do not put real values in examples, screenshots, issue reports, or committed files.