For Ingress First Saturday

IFS Passcode Relay

Build your event's passcode together, in real time — no more screenshots in a group chat.

Open @ifs_relay_bot in Telegram

What is this?

Ingress First Saturday is a recurring in-person event for the mobile game Ingress. During it, players are given the images of a set of portals; visiting each one in the field and inspecting its media reveals one character. Concatenating the characters in the right order produces a passcode redeemable in the in-game store for an IFS item pack.

This bot lets everyone attending a specific IFS report the character they found and the position it belongs to, and keeps a live, shared view of the passcode as it fills in. Several IFS events can run at once — each with its own join code and its own group of participants.

How it works

  1. 1Whoever organizes the passcode relay creates an event with /newevent — the creator is joined automatically as its administrator, and gets a ready-to-paste invite message to forward to attendees.
  2. 2Every other attendee sends /join <code> to the bot, which also invites them to run /sharetext and help spread the word.
  3. 3Found something? Report it by sending its position and value, no command needed:
    • "6 GLYPH" records that position 6 is GLYPH.
    • Made a mistake and want to correct your own report? Resend the same position with the right value — no confirmation needed, and the bot reminds you what the old value was in case you want to undo it.
    • Reported to the wrong position, or don't actually know it yet? Send just the position with nothing after it, e.g. "6", to remove your own report there.
  4. 4If two different people report different values for the same position, both are kept and shown as separate possibilities — until the event's administrator settles it with /resolve.
  5. 5Full agreement isn't the same as verified: the event can only be closed once its administrator has actually tested a passcode in-game and confirmed it with /verify, which then sends the final passcode to every participant.

Commands

Every player sees these in their own language, set once with /language.

Getting started

/start, /help
Introduction and command list.
/language <code>
Set your language (en, ca, es, fr, gl, eu, pt, it, de).

Events

/newevent <name> [| <pattern>]
Create a new IFS event and get its join code; joins you automatically and marks you trusted. Confirms first if your current event is still unresolved (declining creates nothing); that one is handed off first. The pattern is optional (default XXX99*999XX); to set your own, type the name, then a "|", then the pattern using X for a letter, 9 for a digit and * for a whole word, e.g. "/newevent Barcelona 2026-08 | XXX99*999XX".
/join <code>
Join an event — confirms first only if your current event is still unresolved; reopens one closed with no administrator under you, instead of rejecting the code.
/leave
Leave your current event. If you're the administrator, another participant automatically takes over (trusted ones first, then whoever's contributed the most), or the event closes as unfinished if no one is eligible — creating or joining a different event hands off the same way.
/current
Show your current event, its administrator and participant count.
/sharetext [code] [lang]
(Re)get the invite message, defaulting to your current event and own language.
/events
List every event you've been part of, current or past.

Reporting the passcode

"<position> <value>"
Report the value found at a position.
"<position>" (no value)
Remove your own report at that position, if any.
/status
Show the current state of the passcode on demand, and move future live updates to this new message.

For the event's administrator

/resolve <position> [<value>]
Pick the correct value when there's a disagreement; with no value, lists reported values (with trusted-supporter breakdown) as tap-to-resolve buttons.
/resolve
Walk through every position still in disagreement, one at a time; once none are left, points the administrator at /verify — consensus alone never closes the event.
/unresolve <position>
Reopen a resolved position.
/trust, /troll, /untrust <user>
Moderate a participant's contributions; trusted support is called out in /resolve's candidate lists.
/kick <user>
Remove a participant from the event.
/promote <user>
Hand the administrator role to another participant already in the event; marks them trusted too, the same way /newevent does for its own administrator.
/claim
Try to take over as administrator if the current one has gone quiet for 30+ minutes; they get 5 minutes to accept, decline, or not respond before it goes through.
/verify <passcode>
The only way to close an event: paste a passcode confirmed correct at the game's redeem screen; resolves every position from it at once, freezes the event and announces the final passcode to everyone.