Skip to main content

Natural Participation

Reward organic community behavior without requiring slash commands. Users earn LTZ simply by participating naturally in your server.

Database-Driven Configuration

All Natural Participation events are stored in the monitoring_rules Supabase table. When you connect your server via /setup connect, default events are automatically created. Both the Discord bot and Partner Portal read/write from this same source.

Features

FeatureDescriptionDefaultConfigurable
GM Check-inReward "gm" or "good morning"25 LTZ, 24h cooldown
GN Check-inReward "gn" or "good night"15 LTZ, 24h cooldown
Quality MessagesReward thoughtful, high-quality messages10 LTZ (disabled)
Popular MessagesReward when messages reach reaction thresholds25 LTZ (disabled)
Auto-WelcomeAutomatically reward new members on join50 LTZ, one-time
Server BoostSpecial reward for Nitro boosters500 LTZ
Voice ActivityReward for time in voice channels25 LTZ

GM/GN Check-in

Recognized Patterns

Good Morning (case-insensitive):

  • gm, GM
  • good morning
  • gm everyone, gm fam, gm frens
  • morning!
  • rise and shine

Good Night:

  • gn, GN
  • good night
  • gn everyone, gn fam
  • nighty night
  • sweet dreams, sleep well

Configuration

/config events action:edit name:gm_checkin reward:50
/config events action:edit name:gn_checkin reward:25

Cooldown

Default 24-hour cooldown prevents spam. Users can only earn once per day for each type.


Quality Message Scoring

Messages are scored based on multiple factors.

Scoring Criteria

FactorPoints
Length (100+ characters)+
Word count (20+ words)+
Contains code+
Contains helpful links+
Multi-paragraph+

Messages scoring above the threshold receive rewards (max 5 per day by default).

Enable Quality Messages

In Partner Portal → Discord → Natural Participation:

{
"messageQuality": {
"enabled": true,
"minCharacters": 100,
"minWords": 20,
"rewardPerQualityMessage": 10,
"maxDailyRewards": 5
}
}

Reward messages that get lots of reactions.

How It Works

  1. User posts a message
  2. Other members react
  3. When reactions reach threshold (default: 10), user earns reward
{
"reactionRewards": {
"enabled": true,
"thresholdForPopular": 10,
"popularMessageReward": 25
}
}

Voice Channel Rewards

Reward users for time spent in voice channels.

Configuration

SettingDescriptionDefault
minutesPerRewardMinutes in voice to earn one reward60 min
rewardAmountLTZ per reward cycle25 LTZ
maxRewardsPerDayDaily cap per user3 rewards
requireOthersMust have other users in channeltrue
minOtherUsersMinimum other users required1

How It Works

  1. Gateway tracking: Bot tracks voice channel joins/leaves via Discord gateway
  2. Time accumulation: Voice minutes accumulate while in eligible channels
  3. Claim rewards: Users run /voice claim when they have enough time
  4. Daily cap: Voice tracker enforces maxRewardsPerDay limit
Voice Claims Bypass Event Cooldown

Voice rewards have their own rate-limiting system (maxRewardsPerDay). The /voice claim command bypasses the event handler's cooldown check because the voice tracker already enforces the daily limit. This allows users to claim multiple rewards in a single sitting if they've accumulated enough time.

User Commands

CommandDescription
/voiceCheck voice time progress and available rewards
/voice claimClaim earned voice reward (ephemeral response)

Example Flow

  1. User joins voice channel at 2:00 PM
  2. User leaves at 3:00 PM (60 minutes accumulated)
  3. User runs /voice → Shows "1 reward available"
  4. User runs /voice claim → Earns 25 LTZ
  5. User can claim up to 3 rewards per day (default)

Configure Voice Rewards

/config voice minutes_per_reward:30 ltz_per_reward:15 max_daily:10

Event Type

Voice rewards use the voice_time event type. When configuring via /config events:

/config events action:create name:voice_time reward:25 cooldown:-1 smart:true
Cooldown Setting for Voice Events

Use cooldown:-1 or cooldown:0 for voice events. The voice tracker's maxRewardsPerDay is the authoritative rate limit, not the event cooldown.


How It All Works

When you connect your Discord server via /setup:

  1. Real-time Detection: Loyalteez monitors messages for GM/GN patterns, quality content, and engagement
  2. Automatic Rewards: When patterns are detected, rewards are automatically distributed
  3. No Configuration Needed: Default settings work out of the box

What Gets Detected

  • GM/GN messages (with 24-hour cooldown)
  • Quality messages (100+ characters, thoughtful content)
  • Voice channel activity
  • Third-party bot level-ups (Mee6, Arcane, etc.)
  • Server boosts

Verify It's Working

Run /test all in your Discord server. You should see:

Natural Participation: Active ✅

Configuration in Partner Portal

Go to Partner Portal → Integrations → Discord → Natural Participation:

{
gmCheckin: {
enabled: true,
reward: 25,
cooldownHours: 24,
responseEnabled: false
},
gnCheckin: {
enabled: true,
separateCooldown: false, // Share cooldown with GM
reward: 15
},
messageQuality: {
enabled: false,
minCharacters: 100,
minWords: 20,
rewardPerQualityMessage: 10,
maxDailyRewards: 5
},
reactionRewards: {
enabled: false,
thresholdForPopular: 10,
popularMessageReward: 25
},
welcomeAutomation: {
enabled: false,
autoRewardOnJoin: false
}
}

Best Practices

Prevent GM Spam

  1. Channel restriction: Limit GM/GN to a specific channel

    • Configure in Partner Portal → Events → Allowed Channels
  2. Reasonable rewards: Don't make GM/GN the highest paying event

  3. Quality balance: Enable quality messages to reward substantive content

Encourage Voice Participation

  1. Reasonable caps: 10 rewards/day = 5 hours of voice
  2. Team activities: Combine with game nights for bonuses
  3. Multipliers: Give role bonuses for voice regulars

Quality Content

  1. Start disabled: Enable after community is established
  2. Moderate thresholds: 100 chars is reasonable
  3. Daily caps: Prevent gaming the system