🎭

Social Puppeteer

βœ“ AppLive

Secret contracts in your DMs. Get someone to say the thing without them noticing, and the bot sounds the siren.

how-it-works

Social Puppeteer turns everyday chatter into a game of hidden manipulation.

Every day at issue_time it picks a few active members as agents and DMs each a secret contract against another player. A contract is written from the recent chat and the target’s own messages. Examples: bait someone into a 300-character rant, start an argument about food, or get the chat to repeat a made-up idiom.

Then it watches. When the target takes the bait in the main chat, the bot goes off with a siren, quotes the message and names the winner. If nobody pulls the strings in time, the contract is revealed when it expires: β€œThe curtain falls. These strings were never pulled.”

Nobody knows who holds a contract, so everyone suspects everyone. That’s the fun.

See it in action
#general
🎭
Social Puppeteerβœ“ AppToday
🎭 The curtain rises. 3 secret contracts just went out. Someone in this chat is pulling your strings... Trust no one.
πŸ”’ Direct message, only the agent sees this
🎭
Social Puppeteerβœ“ AppDirect message
βœ‰οΈ Your secret contract
Target: @Sam
Task: get Sam to explain what "to butter the moon" means, or agree with it.
Reward: 2 points Β· 24 hours
A
AlexToday
honestly that plan is like trying to butter the moon
S
SamToday
lol yeah, classic moon buttering
🎭 1
🎭
Social Puppeteerβœ“ AppToday
🚨🚨🚨 @Alex @Sam
🚨 CONTRACT COMPLETED 🚨
@Sam danced on the strings of @Alex.

πŸ† Puppet master: @Alex +2 points and one order
🎭 Puppet: @Sam for 30 minutes
Social Puppeteer is typing…

your-members

What the bot actually does to people in your server.

Secret contracts by DM

Once a day 3–4 active members become agents. Each gets a private contract against another player, e.g. "get @Sam to start an argument about the weather". Members with closed DMs are skipped.

The bot watches

Every few messages, an AI model checks the main chat for a victim who fell into a trap. Asking the victim outright, or revealing the contract, doesn't count.

The siren

When the trap snaps shut, the bot replies to the victim's message with a siren, the contract and the winner. Unfinished contracts are revealed when they expire.

Points, orders and the Puppet

The agent earns 1–3 points and an order (the right to commission a contract against someone). The victim wears the purple 🎭 Puppet role for 30 minutes, with a 🎭 on everything they say.

πŸ›Ÿ Safety nets

  • Anyone can stop playing with /contract optout: no contracts for them or against them, and running ones are cancelled.
  • The Puppet role is removed automatically; on start the bot removes it from anyone without a debuff on record.
  • Orders are filtered. A contract is only built from a wish if the wish is harmless.
  • Set debuff_minutes to 0 to keep the game without any role at all.
  • Messages from the main chat are sent to an AI model to write and judge contracts. The bot stores contracts, scores and the proof quote, not the chat.

permissions

The invite link asks for exactly these. Nothing else, and no Administrator.

Server permissions
  • View ChannelsSees the main chat you pick.
  • Read Message HistoryReads recent messages to write contracts and to check whether one was completed.
  • Send MessagesPosts the round teaser, the 🚨 siren and expired contracts, and DMs each agent their contract.
  • Embed LinksContracts and sirens are rich embeds.
  • Add ReactionsPuts a 🎭 on messages from someone who is currently a Puppet.
  • Manage RolesCreates the purple 🎭 Puppet role and gives it to a fooled victim for a while.
Privileged intents
  • Server MembersKnows who the players are and gives or removes the Puppet role.
  • Message ContentNeeds the text of the chat to write contracts and spot when a trap snaps shut.

⚠️ Drag the bot's role above the members it should be able to debuff, so it can give them the 🎭 Puppet role.

setup

  1. Invite the bot. It joins with safe defaults and does nothing yet.
  2. Run /puppeteer channel #general to pick the main chat, where contracts are played out.
  3. Optionally describe your server so contracts fit it: /puppeteer set theme a gaming clan that argues about patch notes.

settings

SettingDefaultAllowedWhat it does
enabledonon / offHand out contracts every day
issue_time12:00HH:MMTime of the daily round in the server timezone
timezoneUTCIANA name, e.g. Europe/MoscowTimezone for the schedule
languageautoauto or a language, e.g. EnglishLanguage of the contracts (auto = the chat's language)
themea former language-exchange communityup to 300 charactersWhat the server is like
min_contracts31–10Contracts per round
max_contracts41–10…and at most (random in between)
contract_hours240.5–168How long an agent has to complete a contract
active_hours721–720Only members who wrote in the last N hours take part…
active_min_messages31–500…with at least this many messages
check_every123–100Check the chat for completed contracts every N messages
check_window4010–200How many recent messages each check reads
debuff_minutes300–1440How long a fooled victim stays a 🎭 Puppet (0 = never)
operatorsnone@users or noneWho may use the @Puppeteer debug commands (none = anyone with Manage Server)

Change one with /puppeteer set <setting> <value>. Each server has its own settings.

commands

For admins

Needs Manage Server (adjustable in Server Settings β†’ Integrations).

/puppeteer channel #channel
The main chat, where contracts must be completed and the siren goes off. Nothing happens until this is set.
/puppeteer settings
Show all settings and when the next round is due.
/puppeteer set <setting> <value>
Change one setting.
/puppeteer reset <setting>
Back to the default.

For everyone

Any member can use these.

/contract mine
Your secret contract, score and orders (only you see it).
/contract order @victim [wish]
Spend a win: the next round gives someone a contract against that victim.
/contract leaderboard
The best puppet masters of the server.
/contract optout
Stop playing: no contracts for you or against you.
/contract optin
Play again.

Operator & debug

Mention the bot at the start of a message. Only the server's operators, or Manage Server if none are set.

@Puppeteer issue [n]
Hand out a round now (optionally exactly n contracts).
@Puppeteer give @agent @victim
One contract right away, skipping the activity rules.
@Puppeteer check
Check the main chat now.
@Puppeteer status
DMs you the active contracts (they're secret).
@Puppeteer cancel 12 / cancel all
Cancel contracts without revealing them.
@Puppeteer lift @user
End someone's 🎭 Puppet debuff early.