Skip to content

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.

config.yml
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"
KeyTypeDescription
discord.webhook-urlStringDiscord webhook URL used to send sale embeds.
discord.usernameStringWebhook display name shown in Discord.
discord.avatar-urlStringOptional 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.

KeyTypeDescription
spigot.cookieStringSpigotMC authentication cookie. Must have access to the configured premium buyer pages.
spigot.request-delay-msLongDelay between paginated buyer-list requests.
spigot.pluginsListResource targets to monitor. At least one valid target is required.

Each plugin target has:

KeyTypeDescription
nameStringFriendly plugin name shown in Discord and used as the state key.
buyer-list-urlStringSpigotMC 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"
KeyTypeDescription
scan.interval-minutesLongDelay between continuous scans.
scan.notify-existing-on-first-runBooleanWhether the first scan should send notifications for already-existing buyers.
scan.state-fileStringPath to the JSON file that stores seen buyers. Relative paths are resolved from the working directory.

By default:

scan:
notify-existing-on-first-run: false

The 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.

Keep these values private:

  • discord.webhook-url
  • discord.avatar-url if it points to a private or temporary asset
  • spigot.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.