Skip to main content

Tune-In Events

This page is the event catalog: every event type the Resonance bot can fire, what you have to do to trigger it, which Quest Pack tier it sits in (if any), and how it interacts with Bounty Mode.

May 2026 pivot

The economy reshaped on 2026-05-15. Every event below now emits Activity Score in real time. What happens next depends on the brand:

  • On Bounty Mode brands the per-event RSNC payout is 0. AS rolls into your Monday 00:01 UTC bounty pool share.
  • On legacy/additive brands the per-event RSNC amounts below pay out as they always have.

Gated event categories now require a held Quest Pack to emit AS. The core events (daily check-in, social links, quality messages/replies) always emit AS without any pack. Quest Packs go live for purchase Mon 2026-05-25; a free starter pack covers all gated categories during the W21 canary week.

New to Tune In?

Read Tune In — Level Up Your Frequency first. It explains the AS-fed leveling mechanics and the value matrix. This page is the rule-book for the events that feed it.

How events work

Every event lives in the brand's monitoring_rules table in Supabase. The defaults below are what the bot seeds on first /setup (see src/constants/default-events.js in the bot repo); brand admins then tune each value from Discord (/event edit) or the Partner Portal. The bot reads monitoring_rules as the single source of truth on every event.

For each event the brand configures:

  • Reward amount — base RSNC paid when the event fires (on additive brands), OR the AS weight emitted (on bounty brands).
  • Cooldown (cooldown_period) — minimum time between two rewards of the same event for the same user.
  • Claim cap (max_claims_per_user) — per-period cap on how many times the event can pay you.
  • Detection method — how the bot sees it: chat pattern, message quality scan, reaction drop, channel watch, stage tick, voice tick, on-chain contract event, third-party bot webhook, etc.
  • Detection config — event-specific parameters (regex patterns, emoji lists, channel filters, strictness level, min length, and so on).
  • Active flag — admins can toggle any event on or off without losing its configuration.

On additive brands, your Generation Boost (from Tune In) multiplies the reward amount. On Bounty Mode brands, the same multipliers compound your AS emission instead — which then scales your weekly bounty pool share. Claim caps are a separate system — they can be expanded by Charge Boost, which comes from gear sets and perks (not Tune-In).

To see exactly what's configured on your server, ask an admin to run /event list — it prints the live monitoring_rules values. Run /cooldowns yourself to see your current AS, your projected weekly bounty share (if bounty mode), and the events you're eligible for.

Quest Pack gating — which events need which pack

The core events (daily check-in, social-link posts, quality messages and replies) always emit AS without any Quest Pack. Everything else is gated by a tier:

Quest Pack tierUnlocks
Core (always-on)daily_checkin, social_share, regular_engagement (quality messages), quality replies
Standard ($1 USDSC / 1,000 RSNC)thread_starter, thread_reply, reply
Rare ($3 USDSC / 3,000 RSNC)engagement_bounty, codex_reward, deep_reply, news_tracker, atom_levelup, reaction_threshold, mentor_reach, traffic_director
Mythical ($10 USDSC / 10,000 RSNC)onchain_mint, nft_purchase, perk_mint, vote_cast, salvage_payout, mulch_payout, place_order, reorder_purchase, season_vote, voice_join, voice_minute, voice_claim, voice_sustained, voice_time, voice_copresence, stage_attendance, stage_host

Packs are cumulative — Mythical covers everything Standard and Rare unlock. Tiers above show "without pack" → "with pack" event AS as 0 → emits; on Bounty Mode brands this directly affects your weekly pool share. See Quest Packs for the full breakdown.

Default events (shipped on every server)

These five events are created automatically on first /setup. Values shown are the seed defaults; admins may adjust any of them.

1. Daily check-in (daily_checkin)

Post "gm" or "gn" (and common variants — "good morning", "morning!", "gn fam", "sweet dreams", "rise and shine", etc.) in any channel the bot can read.

  • Default reward: 2 RSNC
  • Cooldown: 24 hours per user
  • Claim cap: effectively unlimited — gated by the cooldown
  • Detection: gateway_pattern — regex match against the server's configured pattern list
  • Admin knobs: patterns (custom regex list), cooldown, reward, optional bot response
  • Builds your streak. Consecutive days of claiming raise your streak multiplier.

2. Regular engagement (regular_engagement)

Post genuine, thoughtful messages. The bot scores every eligible message for quality (effort, originality, naturalness, context fit) and pays out if the score clears the server's strictness bar.

  • Default reward: 10 RSNC per qualifying message
  • Cooldown: 1 hour between quality rewards per user
  • Claim cap: 5 per day
  • Detection: gateway_analysis — the bot's message-quality scorer
  • Admin knobs: strictness_level (1–10), min_characters, min_length (words), excluded_channels, per-channel multipliers
  • What disqualifies a message: copy-paste, AI-sounding text, rapid-fire repetition, one-word replies, stickers/reactions-only posts.

Run /analyze to see your recent message quality breakdown.

When one of your messages collects a configurable number of unique reactions, it pays you. If the admin enables it, each voter can also earn a small reward.

  • Default reward: 10 RSNC to the author; 0 RSNC per voter (set voter_reward > 0 to enable)
  • Cooldown: per-message dedup — each message can only trigger once
  • Claim cap: unlimited across different messages (server-configurable daily cap on threshold rewards)
  • Detection: gateway_reaction — reaction events in configured channels (empty list = all channels)
  • Admin knobs: channels scope, voter_reward, daily-threshold cap, threshold count

4. Announcement reactions / News tracker (news_tracker)

Admins use /watch to attach the bot to an announcements channel. When a new post appears, the bot seeds its own emoji reaction; reacting with that emoji claims the reward.

  • Default reward: 5 RSNC
  • Cooldown: none — per-instance dedup instead
  • Claim cap: one claim per user per announcement
  • Detection: channel_watch — auto-instanced reaction drop on every new post in the watched channel
  • Admin knobs: watched_channels, seed emoji, auto-instance flag

5. Stage attendance (stage_attendance)

Join a live Stage event and stay connected. The bot pays a small reward every 5 minutes while the stage is live, as long as you're not deafened.

  • Default reward: 5 RSNC per tick
  • Cooldown: per-tick dedup (you can't be paid twice for the same 5-minute window)
  • Claim cap: up to 24 ticks per stage session (≈ 2 hours per stage)
  • Detection: auto_stage_tick — voice-state presence + tick timer
  • Admin knobs: max_ticks_per_session, skip_deafened, requires-active-instance flag

Opt-in events (admins enable per server)

These exist in the bot but are not shipped on by default. Admins enable them with /event create or from the Partner Portal.

Time in voice (voice_tick)

Stay connected in a voice channel. The gateway sends a tick every ~5 minutes while you're active (not deafened).

  • Reward / cadence: per server. Default voice config: ~25 RSNC per 60 minutes of voice, up to ~3 rewards per day
  • Dedup: cumulative session duration — you're only paid for new minutes
  • Admin knobs: minutesPerReward, ltzPerReward, maxDailyRewards
  • How to claim what's accrued: run /voice claim (the command pays out whatever time has accumulated since your last claim)

Voice co-presence (voice_copresence)

Being in the same voice channel as at least one other user.

  • Dedup: per-day cap per user (date-keyed)
  • Claim cap: configurable per server
  • Admin knobs: reward amount, daily cap

Server boost (server_boost / first_boost / boost_tier_upgrade)

Nitro-boost the server. The bot fires one of three event variants depending on whether it's your first ever boost, a tier upgrade, or an additional boost.

  • Dedup: first_boost is one-shot per user (flag in KV); tier upgrades fire when the server crosses a new Nitro tier
  • Admin knobs: separate reward amounts for first_boost, boost_tier_upgrade, and per-tier server_boost variants

Member welcome (member_join)

Awarded once when you first join the server, if the admin has enabled it.

  • Dedup: one-time per user — welcome flag in KV
  • Admin knobs: autoRewardOnJoin, welcome channel, message template, reward amount

Resource share (resource_share)

Post a message with a file attachment or resource link in a monitored channel.

  • Cooldown: per-user, configurable (default ~1 hour)
  • Claim cap: unlimited — gated by cooldown
  • Admin knobs: cooldown, reward amount, optional link-type detection

Social share (social_share)

Post a message containing a social-media URL (Twitter/X, farcaster, Discord invite, YouTube, etc.). The bot detects the platform from the URL.

  • Cooldown: per-user, configurable
  • Admin knobs: per-platform reward amounts, pattern list

Custom emoji reactions (custom_reward_emoji)

React to any message with one of the server's admin-configured reward emojis. Distinct from reaction_threshold (which rewards the post author) and news_tracker (which is channel-scoped) — this one pays you, the reactor.

  • Dedup: per-user-per-emoji rate limit
  • Admin knobs: customRewardEmojis list — each entry maps an emoji to a reward amount

Keyword triggers (channel_message)

Admins can attach arbitrary keyword triggers to specific channels: post a message matching the pattern in a watched channel and the bot pays the attached reward.

  • Cooldown: per-trigger, configurable
  • Admin knobs: pattern list, min-length filter, channel scope, reward amount per trigger

Third-party bot integration (third_party_bot)

External services (Rumble Royale, gaming leaderboards, on-chain hooks, etc.) can post events to the bot's API with a bot_key and event_type. The bot maps the username in the payload to the Discord user via Supabase identity resolution and pays the reward.

  • Admin knobs: registered bot_key, event-type mapping in monitoring_rules, per-event cooldown and cap

Admin-triggered events

Reaction drops

Admin uses /drop or the scheduled-drop builder to post a message with a configured emoji. Reacting with the right emoji claims the drop.

  • Cooldown: per-user-per-message dedup
  • Claim cap: maxClaims per drop (0 = unlimited)
  • Expiry: timed drops close at expiresAt; permanent drops never expire
  • Quiz mode: when correctEmoji is set, only one emoji in the drop pays out
  • Admin knobs: emoji list, maxClaims, correctEmoji, isPermanent, expiresAt

Button drops

Same shape as reaction drops but the claim is a button click. Rewards, expiry, and per-user lock are the same idea.

Custom events via /claim

If an admin has built a brand-specific quest or community-challenge event, they share its event_id:

/claim event_id:YOUR_EVENT_ID

The command enforces whatever cooldown, cap, and detection rules are set on the event in monitoring_rules.

How threads interact with every event

Discord threads are child channels; the bot treats them as an extension of their parent.

  • Message events in threads (daily_checkin, regular_engagement, social_share, resource_share, keyword triggers) do count for rewards — the bot evaluates the parent channel_id alongside the thread's own ID.
  • Channel exclusions cascade to threads. If an admin excludes #general from quality rewards, threads under #general are excluded too.
  • Channel watches inherit. If the admin attaches news_tracker or a keyword trigger to a channel, every thread started under it inherits the watch automatically — you don't need a separate /watch per thread.
  • Reactions in threads count for reaction_threshold, reaction_drop_claim, news_tracker, and custom_reward_emoji against the thread's parent.
  • Stage channels and voice channels are not threads — those events have their own dedup independent of the thread model.

If the role bundle for a Tune-In milestone grants "Send Messages in Threads," hitting that milestone unlocks you from being able to post in threads, which in turn lets you start earning on events that evaluate thread messages.

Which events unlock which milestones

Every RSNC-earning event above contributes to your Tune-In balance. When you cross a milestone level (10, 20, 30, …, 90) the bot auto-grants the matching Discord role on every server that has bound one.

In Resonance Official, the nine Solfeggio milestones are bound end-to-end: Foundation (L10), Restoration (L20), Liberation (L30), Transformation (L40), Miracles (L50), Connection (L60), Expression (L70), Intuition (L80), Awakening (L90). Each role carries its own permissions and event/channel access set by the admin team. Other brands will pick their own subset and bundle — ask an admin, or check the server's /tune-role list (admin-only).

Admins configure bindings with /tune-role set-milestone (Full Admin only) and can retroactively grant every past milestone with /tune-role backfill if roles were bound after users already leveled up.

Rules that apply to every event

  • Ban check. A user who has been points-banned in the server earns nothing from any event until the ban is lifted.
  • Cooldown enforcement. Cooldowns are keyed by (server, event, user) and are set after a successful payout, so a failed reward won't lock you out.
  • Claim caps. Lifetime or per-period, whichever the admin chose. Hitting a cap is silent — you simply stop being paid until the window resets.
  • Server multiplier. Some servers apply a global multiplier on top of base rewards (see /config server-multiplier).
  • Role effects. Active role bonuses (multipliers, flat bonuses) stack according to the server's stacking mode (multiplicative, additive, or highest_only). Combined multipliers are capped at 10× and flat bonuses at the base amount.
  • Tune-In on top (additive brands). On additive brands, Generation Boost is applied after the 10× earning cap — it continues to increase the payout even when the pre-boost reward is capped. On Bounty Mode brands, this rule doesn't apply (per-event payout is 0); Tune-In's role on bounty brands is gating Quest Packs and unlocking Kitchen slots.
  • Quest Pack gating (bounty brands). On bounty brands, gated event categories emit 0 AS without a matching Quest Pack — the event still fires (cooldown, dedup, caps all run), it just doesn't add to your bounty share. Core events always emit AS.
  • Per-recipient bounty cap. On bounty brands, a single user can't receive more than 1,000,000 RSNC from a single brand in a single week, even if their AS share would compute higher.
  • Manual /reward grants are flat. Admin-issued grants pay exactly the amount requested and don't run through any of the multipliers above.

Troubleshooting

I posted "gm" and didn't get RSNC. Most likely the 24-hour cooldown hasn't elapsed since your last check-in, or the server has disabled the event. Use /cooldowns to see your timers.

My message should have qualified but didn't. Run /analyze — it shows the last few messages and why they did or didn't score. Strictness, repetition, and copy-paste detection are the usual culprits.

I reacted to an announcement but nothing happened. The channel might not be watched by the bot, you might already have claimed that specific message, or the bot needs admins to run /watch on that channel.

I was in the voice channel for an hour but didn't earn. Run /voice claim — voice time accrues silently and is paid out on demand up to the server's daily cap. If you were deafened for part of the session, that time doesn't count.

I hit a milestone but didn't get the role. Tune-In level-up grants arrive via a fire-and-forget webhook; if the bot was briefly unreachable, the 5-minute cron reconciliation will catch you on the next pass. Give it up to 5 minutes, then ping an admin if the role still isn't there.

I can't post in a thread. Threads require the "Send Messages in Threads" permission. It's a common addition to the Level-10 (Foundation) role bundle on servers that have wired that up — hit L10 to unlock it. Otherwise ask an admin.

See also