Natural Participation
Reward organic community behavior without requiring slash commands. Users earn LTZ simply by participating naturally in your server.
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
| Feature | Description | Default | Configurable |
|---|---|---|---|
| GM Check-in | Reward "gm" or "good morning" | 25 LTZ, 24h cooldown | ✅ |
| GN Check-in | Reward "gn" or "good night" | 15 LTZ, 24h cooldown | ✅ |
| Quality Messages | Reward thoughtful, high-quality messages | 10 LTZ (disabled) | ✅ |
| Popular Messages | Reward when messages reach reaction thresholds | 25 LTZ (disabled) | ✅ |
| Auto-Welcome | Automatically reward new members on join | 50 LTZ, one-time | ✅ |
| Server Boost | Special reward for Nitro boosters | 500 LTZ | ✅ |
| Voice Activity | Reward for time in voice channels | 25 LTZ | ✅ |
GM/GN Check-in
Recognized Patterns
Good Morning (case-insensitive):
gm,GMgood morninggm everyone,gm fam,gm frensmorning!rise and shine
Good Night:
gn,GNgood nightgn everyone,gn famnighty nightsweet 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
| Factor | Points |
|---|---|
| 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
}
}
Popular Messages
Reward messages that get lots of reactions.
How It Works
- User posts a message
- Other members react
- When reactions reach threshold (default: 10), user earns reward
Enable Popular Messages
{
"reactionRewards": {
"enabled": true,
"thresholdForPopular": 10,
"popularMessageReward": 25
}
}
Voice Channel Rewards
Reward users for time spent in voice channels.
Configuration
| Setting | Description | Default |
|---|---|---|
minutesPerReward | Minutes in voice to earn one reward | 60 min |
rewardAmount | LTZ per reward cycle | 25 LTZ |
maxRewardsPerDay | Daily cap per user | 3 rewards |
requireOthers | Must have other users in channel | true |
minOtherUsers | Minimum other users required | 1 |
How It Works
- Gateway tracking: Bot tracks voice channel joins/leaves via Discord gateway
- Time accumulation: Voice minutes accumulate while in eligible channels
- Claim rewards: Users run
/voice claimwhen they have enough time - Daily cap: Voice tracker enforces
maxRewardsPerDaylimit
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
| Command | Description |
|---|---|
/voice | Check voice time progress and available rewards |
/voice claim | Claim earned voice reward (ephemeral response) |
Example Flow
- User joins voice channel at 2:00 PM
- User leaves at 3:00 PM (60 minutes accumulated)
- User runs
/voice→ Shows "1 reward available" - User runs
/voice claim→ Earns 25 LTZ - 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
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:
- Real-time Detection: Loyalteez monitors messages for GM/GN patterns, quality content, and engagement
- Automatic Rewards: When patterns are detected, rewards are automatically distributed
- 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
-
Channel restriction: Limit GM/GN to a specific channel
- Configure in Partner Portal → Events → Allowed Channels
-
Reasonable rewards: Don't make GM/GN the highest paying event
-
Quality balance: Enable quality messages to reward substantive content
Encourage Voice Participation
- Reasonable caps: 10 rewards/day = 5 hours of voice
- Team activities: Combine with game nights for bonuses
- Multipliers: Give role bonuses for voice regulars
Quality Content
- Start disabled: Enable after community is established
- Moderate thresholds: 100 chars is reasonable
- Daily caps: Prevent gaming the system