14 Free Tools for February Fest Live Ops Discord and Steam Community Moderation - 2026

February fest hour two: #playtest holds twelve crash screenshots, Steam discussions ask for refunds, a creator DM demands a custom build, and the founder is still reproducing a menu hitch. Nobody turned on slowmode. Three volunteers answer the same “is co-op in the demo?” question with three different answers.
February 2027 Steam Next Fest live week punishes teams that treat community as “marketing overflow.” February live week timebox caps community hours—this Listicles & Resource Roundups post gives fourteen free tools (plus a four-tool minimum stack) to moderate Discord and Steam surfaces with fest_live_moderation_receipt_v1.json gates M1–M6 and a facilitator roster JSON.
Non-repetition note: Tuesday Discord CSV ingest owns pre-live playtest thread CSV (D1–D6). 18 playtest feedback tools owns async QA collection. Hour-one funnel snapshot owns analytics CSV. This URL owns live fest moderation stack + roster—not another metadata checklist.
Pair February timebox, hour-one funnel, forward blog #4 pager challenge, Resource #36, Guide #39 forward.
Why this matters now (February 2027 live week)
- Bug reports and refund threats share one hour — Community lane needs templates before pager owns repro.
- Steam discussions ≠ Discord — Different escalation paths; one roster must list both surfaces.
- Creator DM batches — Timebox D2–D4 allows 45-minute windows—tools enforce batching.
- False promises mid-fest — Moderators without scripts promise hotfixes that violate HOTFIX exception policy (blog #10 forward).
- Receipt culture —
fest_live_moderation_okon BUILD_RECEIPT proves facilitators were named before D1 open.
Direct answer: Deploy four-tool minimum (bot + slowmode + templates + roster), file fest_live_moderation_receipt_v1.json with M1–M6 GREEN before fest hour one, wire roster timezones to live week stand-up template.
Who this listicle is for
| Audience | Outcome |
|---|---|
| Beginner | Four-tool stack in one afternoon |
| Solo founder | Stop answering Discord alone during pager nights |
| Producer | Named facilitators + escalation ladder |
| Working dev | jq-validated roster JSON beside BUILD_RECEIPT |
Time: ~90 minutes to wire minimum stack; ~3 hours for full fourteen-tool pass + receipt before D1.
Beginner cheat sheet — four-tool minimum stack
| # | Tool | Live fest job |
|---|---|---|
| 1 | Discord bot (Carl-bot or Dyno free tier) | Role pings, logging, optional automod |
| 2 | Discord slowmode (native channel setting) | Rate-limit #playtest during spikes |
| 3 | Text templates (Discord pinned post or Text Blaze free) | Refund tone, known issues, scope answers |
| 4 | Facilitator roster (Google Sheet or roster.json) |
Who owns Discord vs Steam per hour block |
Rule: All four wired → ready for M1–M3. Tools 5–14 add Steamworks moderation, webhook alerts, GitHub triage bridges, and jq validation.
Developer path — gates M1–M6
| Gate | Pass criterion |
|---|---|
| M1 | facilitator_roster_v1.json lists ≥2 facilitators with timezone + surface (discord / steam) |
| M2 | Slowmode enabled on ≥1 high-traffic channel with documented seconds value |
| M3 | ≥5 templates in moderation_templates_v1.md (refund, crash, scope, ETA, escalation) |
| M4 | Escalation ladder maps community → pager → producer with response SLA minutes |
| M5 | fest_live_moderation_receipt_v1.json committed under release-evidence/ops/ |
| M6 | BUILD_RECEIPT fest_live_moderation_ok: true matches receipt |
fest_live_moderation_receipt_v1.json (template)
{
"schema": "fest_live_moderation_receipt_v1",
"fest_window": "2027-02-next-fest-live",
"generated_at": "2027-02-22T12:00:00Z",
"roster_path": "release-evidence/ops/facilitator_roster_v1.json",
"slowmode_seconds": 30,
"templates_path": "release-evidence/ops/moderation_templates_v1.md",
"escalation_sla_minutes": {
"community_to_pager": 15,
"pager_to_producer": 30
},
"surfaces": ["discord", "steam_discussions"],
"fest_live_moderation_ok": true
}
verify_fest_live_moderation.sh
#!/usr/bin/env bash
set -euo pipefail
REC="${1:-release-evidence/ops/FEST_LIVE_MODERATION_RECEIPT.json}"
ROSTER="${2:-release-evidence/ops/facilitator_roster_v1.json}"
jq -e '.schema == "fest_live_moderation_receipt_v1"' "$REC" || exit 1
jq -e '(.surfaces | length) >= 2' "$REC" || exit 2
jq -e '(.facilitators | length) >= 2' "$ROSTER" || exit 3
jq -e '.fest_live_moderation_ok == true' "$REC" || exit 6
echo "fest_live_moderation verify: OK"
Note: facilitator_roster_v1.json uses top-level facilitators array—keep schema aligned with verify script.
The fourteen tools
Tool 1 — Discord (native slowmode + channel permissions)
Live fest job: Rate-limit #playtest and #fest-announcements during D1–D2 spikes.
Setup: Channel Settings → Overview → Slowmode → 30s (tune per channel). Document value in receipt slowmode_seconds.
Pro tip: Pair with community cap table—slowmode is not a substitute for sleep.
Outbound: Discord slowmode documentation
Tool 2 — Carl-bot (free logging + automod-lite)
Live fest job: Log deleted messages and role mentions for post-fest debrief; optional word filter for refund slurs.
Setup: Invite bot; enable Logging to private #mod-log; disable risky automod rules that false-positive tech terms.
Pro tip: Export log channel weekly into Sunday closeout evidence (blog #11 forward).
Beginner pitfall: Logging every message creates GDPR noise—log moderation actions channel only unless legal approves full capture.
Tool 3 — Dyno (alternative bot — role reminders)
Live fest job: Scheduled reminders for facilitator shift handoffs every 4 hours during D1–D3.
Pro tip: Use one primary bot (Carl-bot or Dyno) to avoid command conflicts—list choice in receipt notes.
Tool 4 — Discord AutoMod (native keyword rules)
Live fest job: Flag refund, scam, chargeback keywords to #mod-escalation without auto-banning players.
Setup: Server Settings → AutoMod → custom keyword rule → Alert only.
Pro tip: Route alerts to pager lane only during on-call windows—see roster shift_end_utc.
Working dev: Map AutoMod alert webhook to #fest-ops with distinct username AutoMod-Fest so pager threads are searchable during 5-night challenge (blog #4 forward).
Tool 5 — Steam Community / Discussions (partner moderation UI)
Live fest job: Pin known issues thread; hide spam; move tech repro to template “post logs here.”
Setup: Steamworks → Community → select app → moderate threads; screenshot pin state for M3 evidence.
Outbound: Steamworks community documentation
Tool 6 — Steam Event comments / broadcast chat (if used)
Live fest job: Assign second facilitator for stream chat—Discord owner should not dual-wield during pager nights.
Pro tip: Stream overlay safe-zone pass (O1–O6) before co-stream—moderation includes layout readability.
Tool 7 — Google Sheets facilitator roster (export to JSON)
Live fest job: Hour blocks with discord_owner, steam_owner, pager_backup.
Export:
# After manual CSV export from Sheet
mlr --icsv --ojson put '$facilitator_id=$name' roster.csv > facilitator_roster_v1.json
Schema:
{
"schema": "facilitator_roster_v1",
"fest_window": "2027-02-next-fest-live",
"facilitators": [
{
"name": "alex",
"timezone": "America/Chicago",
"discord_shift_utc": "2027-02-23T18:00:00Z/2027-02-24T02:00:00Z",
"steam_shift_utc": "2027-02-23T20:00:00Z/2027-02-24T00:00:00Z",
"escalation_contact": "pager_lane"
}
]
}
Tool 8 — Text Blaze / pinned Discord templates (moderation_templates_v1.md)
Live fest job: Consistent answers—scope, refunds, ETA language.
Starter templates:
## T1 — Known crash (pager investigating)
Thanks for the report. We are investigating a menu crash on build {{build_label}}. No ETA yet—watch #fest-announcements.
## T2 — Refund tone (not legal advice)
Sorry the demo missed expectations. Steam handles refunds per their policy—we are fixing {{issue}} on our side.
## T3 — Scope (no co-op in demo)
This fest demo is single-player only—co-op is post-fest roadmap. Appreciate the wishlist!
Tool 9 — Tuesday CSV ingest cousin (playtest thread export)
Live fest job: Pull structured bug counts from Discord playtest threads before moderators argue priority.
Pair Tuesday CSV ritual—run shortened Tuesday-lite on fest D2 if threads explode.
Tool 10 — GitHub Issues + gh CLI (pager escalation bridge)
Live fest job: Moderators file quote-only issues from player text—no invented repro (cousin Whisper tags policy).
gh issue create --title "Fest D2: menu crash report" --body "Player quote: ..." --label fest-live
Tool 11 — jq (roster + receipt validation)
Live fest job: Prove roster has coverage for every fest day hour block.
jq -e '.facilitators | map(select(.discord_shift_utc != "")) | length >= 2' \
release-evidence/ops/facilitator_roster_v1.json
Tool 12 — Discord webhooks → #fest-ops (optional Zapier/Make free tier)
Live fest job: Mirror Steam pin changes or GitHub fest-live labels into Discord for pager visibility.
Fail-closed: If webhook down, moderators post manual stand-up per timebox template.
Tool 13 — OBS / Streamlabs chat dock (stream co-stream moderation)
Live fest job: Separate chat moderator role during co-stream—engineer stays on pager.
Pro tip: Record chat log file beside stream overlay safe-zone pass O1–O6 proofs.
Tool 14 — BUILD_RECEIPT column + Thursday row review
Live fest job: Diff fest_live_moderation_ok and hour_one_funnel_snapshot_ok same row—community promises should not outrun funnel RED.
{
"fest_live_moderation_ok": true,
"fest_live_moderation_receipt": "release-evidence/ops/FEST_LIVE_MODERATION_RECEIPT.json"
}
Escalation ladder (printable)
| Level | Owner | SLA | Action |
|---|---|---|---|
| L0 | Community facilitator | < 30 min | Template reply |
| L1 | Pager engineer | < 15 min after L0 | Repro or defer |
| L2 | Producer | < 30 min after L1 | HOTFIX exception decision |
| L3 | Public post | Producer only | #fest-announcements update |
Rule: L0 never promises ship dates—use T1 template.
Integration with hour-one funnel
When hour-one funnel routes RED, moderators switch to T1 + T2 only—no feature promises until pager GREEN.
| Funnel band | Community template policy |
|---|---|
| GREEN | Normal scope + highlight posts |
| YELLOW | T1 known-issue only |
| RED | T2 refund tone + “investigating” — no ETA |
Proof table
| Row | Evidence | GREEN when |
|---|---|---|
| P1 | facilitator_roster_v1.json |
M1 pass |
| P2 | Slowmode screenshot | M2 pass |
| P3 | moderation_templates_v1.md |
M3 pass (≥5 templates) |
| P4 | Escalation ladder doc | M4 pass |
| P5 | FEST_LIVE_MODERATION_RECEIPT.json |
M1–M6 pass |
| P6 | BUILD_RECEIPT column | Matches receipt |
Scenarios A–G
A — Solo founder, no volunteers
Roster lists founder + contractor with non-overlapping shifts; slowmode 45s on #playtest.
B — Refund dogpile after hour-one quit spike
Deploy T2 only; pager owns GitHub issues—moderators do not debate refunds in thread.
C — Creator demands custom build
Defer to post-fest batch window per timebox; template T3 scope cousin.
D — Steam pin outdated after hotfix
Steam facilitator owns pin refresh within 60 min of setlive—log in mod receipt notes.
E — Bot command conflict
Remove duplicate bot; re-run M5 verify.
F — Cross-surface argument
Discord says fixed, Steam still broken—escalate L1 with build_label screenshot.
G — Fest ends
Export #mod-log + roster actuals to Sunday closeout.
Common mistakes
Moderators inventing repro steps — Quote-only; pair Whisper tags policy.
Pager answering player threads — Steals community cap; violates timebox lanes.
No slowmode on D1 — Duplicate crash reports bury signal.
Single surface coverage — Steam threads rot when Discord gets all attention.
Promising HOTFIX without list — Pair blog #10 opinion forward.
Pre-D1 moderation checklist (copy to release-evidence/ops/fest-live-mod-preflight.md)
# February 2027 live fest moderation preflight
[ ] M1 — facilitator_roster_v1.json (≥2 facilitators, discord + steam shifts)
[ ] M2 — slowmode seconds documented + screenshot
[ ] M3 — moderation_templates_v1.md (≥5 templates, build_label placeholder)
[ ] M4 — escalation ladder posted in #fest-ops
[ ] M5 — FEST_LIVE_MODERATION_RECEIPT.json committed
[ ] M6 — BUILD_RECEIPT fest_live_moderation_ok == true
[ ] #mod-log channel private to staff roles only
[ ] Steam known-issues thread drafted (unpublished until D1)
[ ] Pager engineer named in roster escalation_contact
[ ] Hour-one funnel owner named for D4 snapshot
Run after RC label receipt GREEN and before timebox D1 open.
PowerShell verify cousin
$rec = Get-Content "release-evidence/ops/FEST_LIVE_MODERATION_RECEIPT.json" | ConvertFrom-Json
$roster = Get-Content "release-evidence/ops/facilitator_roster_v1.json" | ConvertFrom-Json
if ($rec.schema -ne "fest_live_moderation_receipt_v1") { exit 1 }
if ($rec.surfaces.Count -lt 2) { exit 2 }
if ($roster.facilitators.Count -lt 2) { exit 3 }
if (-not $rec.fest_live_moderation_ok) { exit 6 }
Write-Host "fest_live_moderation verify: OK"
Facilitator handoff script (every 4 hours D1–D3)
## Mod handoff — 2027-02-23 22:00 UTC
- Outgoing: alex (discord) / sam (steam)
- Incoming: jordan (discord) / sam (steam continues)
- Open escalations: GH-412 menu crash (pager)
- Template policy: YELLOW (funnel D2)
- slowmode: 30s #playtest
- Do NOT promise HOTFIX without HOTFIX-00_ on list
Post to #mod-handoff and pin until next shift—M4 evidence for partners.
Comparison pack (moderation vs cousin workflows)
| Workflow | Receipt | Focus |
|---|---|---|
| Tuesday CSV ingest | playtest_csv_ingest_receipt_v1 |
Structured playtest export |
| Whisper tags | whisper_issue_tag_receipt_v1 |
Quote-only GitHub |
| Hour-one funnel | hour_one_funnel_snapshot_receipt_v1 |
Analytics hour 1 |
| Live moderation | fest_live_moderation_receipt_v1 |
Player-facing surfaces |
| Live timebox | february_live_timebox_receipt_v1 |
Founder hour caps |
Two-founder team split pattern
| Founder | Primary lane | Backup |
|---|---|---|
| Engineer | Pager (GitHub, repro) | Steam pin updates only |
| Designer / community | Discord templates + slowmode | Escalate L1 with quotes |
Receipt founder_count: 2 with non-overlapping discord_shift_utc blocks satisfies M1 without hiring moderators.
Template variable discipline
Every template in moderation_templates_v1.md must use {{build_label}} from RC label receipt—never “latest build” prose.
| Placeholder | Source | Update trigger |
|---|---|---|
{{build_label}} |
BUILD_RECEIPT | After each setlive |
{{issue}} |
Pager L1 ticket title | When GH issue opens |
{{fest_day}} |
Live timebox calendar | Daily stand-up |
Facilitators who paste outdated build_label fail M3 audit—attach screenshot of template preview with current label before D1.
Steam vs Discord tone split
| Surface | Tone | Avoid |
|---|---|---|
Discord #playtest |
Casual, fast, template T1 | Legal refund advice |
| Steam discussions | Neutral, slightly formal T2 | Feature promises |
| Creator DMs | Batch window only | Instant custom builds |
Document tone rules in receipt moderation_policy_version: "2027-02-v1" so Sunday closeout can diff policy changes.
Mid-fest roster change protocol
If a facilitator drops mid-fest:
- Update
facilitator_roster_v1.jsonwithreplacement_forfield. - Bump
fest_live_mod_roster_sha256on BUILD_RECEIPT. - Post handoff script within 30 minutes—M4 SLA.
- Do not change slowmode seconds without producer sign-off (M2 stability).
BUILD_RECEIPT row catalog extension
| Column | When updated |
|---|---|
fest_live_moderation_ok |
After pre-D1 preflight |
fest_live_mod_roster_sha256 |
When roster JSON changes mid-fest |
fest_live_mod_last_handoff_utc |
After each 4h handoff during D1–D3 |
Thursday row review can diff fest_live_moderation_ok beside demo_smoke_ok on mid-fest D5.
Related GamineAI reads
- February live week timebox
- Hour-one funnel snapshot
- Tuesday Discord CSV ingest
- 18 playtest feedback tools
- Refund signal dashboard
- Forward: 5-night pager challenge (blog #4)
- Forward: 14 tools resource #36 when Resource-Create ships paired row
Key takeaways
- Live fest moderation needs bot + slowmode + templates + roster minimum stack.
fest_live_moderation_receipt_v1.jsongates M1–M6 with facilitator roster JSON.- Discord and Steam are separate surfaces—one roster, two owners per shift.
- Escalation ladder keeps community lane from becoming pager lane.
- Pair February timebox community caps.
- Pair hour-one funnel routing bands for template policy.
- Tuesday CSV ingest is pre-live cousin—run lite during fest if needed.
- Quote-only GitHub issues from moderator escalations—no invented repro.
verify_fest_live_moderation.shgives CI one exit code.- Resource #36 forward expands tool bookmarks; this post owns live-week policy.
- Forward 5-night pager challenge for nightly BUILD_RECEIPT diffs during D1–D5.
- February cluster #3 consumed—pair pager challenge on fest nights after pre-D1 preflight.
FAQ
Is this replacing the Tuesday CSV ingest ritual?
No—CSV ingest is structured playtest export; this stack is live player-facing moderation.
Do we need paid Discord bots?
Free tiers suffice for slowmode + logging; paid only if you need advanced automod at scale.
Can one person moderate everything?
Roster may list one name—but shifts must show recovery blocks or M1 fails honesty checks.
How does this relate to refund dashboard?
Moderation templates handle tone; refund dashboard handles 48h lag analytics.
What ships next in February cluster?
Blog-Create #4 — 5-night February fest live ops pager duty challenge (#FebruaryLiveOps2027).
Should moderators file GitHub issues directly?
Only via Tool 10 quote-only bridge after L1 escalation—engineers own repro quality.
Can we mute refund discussions?
Do not blanket-mute—use T2 template + AutoMod alert; legal tone without silencing paying players.
How do contractors fit the roster?
List contractor shifts in facilitator_roster_v1.json with owner: contractor_comms and founder oversight minutes in admin lane.
What if Steam discussions are disabled?
Receipt surfaces may be ["discord"] only—document waiver in notes and keep M2 slowmode mandatory.