How quests work
Verified X engagement, batch-checked once per quest, paid from engagement credit.
A quest points at one X post and rewards members for liking, retweeting or commenting on it. Nothing is honor-system: Fealty reads the post's actual engagers and matches them against members' connected X accounts.
Every action pays on its own
Each rewarded action carries its own point value, set when you create the quest (for example like +10, retweet +5, comment +5). A member who likes but never replies still earns the like, and someone who does everything collects the full total. XP scales with how much of the quest they completed.
Verified once, at the end
Engagement is read once, when the quest expires, not polled while it runs. When endsAt passes:
- Fealty reads the post's likers, retweeters or repliers (whichever the quest rewards).
- Every member whose connected X appears in at least one list is paid for the actions they did, atomically.
- The quest is marked ended and the reads are billed to your engagement credit.
Late engagement after expiry doesn't count, and the single batch read keeps costs flat no matter how many members participate.
What it costs
Reads are billed at official X API rates against your server's engagement credit: roughly one cent per 100 engagers read, with per-quest read ceilings protecting you from viral posts. If credit runs out, the quest pauses instead of failing and resumes when you top up.
Where members see quests
Quests post to #quests with what each action pays, the end time, and one-tap Like, Retweet and Comment buttons that open the post directly in the X app. The announcement pings @everyone by default, because a quest is time-boxed and the points expire with it; Settings switches that to @here or off per server, which matters most when auto quest turns every post into an announcement. A My progress button privately tells a member whether their X account is connected and counted, and after the quest ends, exactly what they earned. The same quest also appears on the community hub with the same one-tap actions.
When the quest finalizes, the original post switches to its ended state (engage buttons gone, totals shown) and a results message lands in the same channel naming who earned what. Long lists show the biggest earners and collapse the rest into a count, so everyone else taps My reward for their own number. Naming earners never pings them.