Greeted once, and only if you are new
An allow-list over arrivals, so a first boot cannot greet everybody who was already there.
Who is greeted
Only someone who joined after the bot, or whom the bot invited, is greeted. Anything the arrival category does not positively name is refused, which is what stops a first boot greeting nine hundred people who have been in the room for a year.
The greeting is planned and sent inside the arrival event, with no queue and no delay, and the settings are read at that moment, so an edit takes effect at the very next join.
| Question | Answer |
|---|---|
| The trigger | The member-arrival events, gated by an allow-list over the arrival category: only someone who joined after the bot, or whom this bot invited, is greeted, and anything unknown is refused. Members who predate the bot are never greeted |
| Timing | Immediate: planned and sent inside the arrival event, with no queue and no delay, and the settings are read at that moment, so an edit takes effect at the next join |
| Two bots, one person | They cannot both greet. The greeted-record is keyed on the member wire id, which SimpleX issues identically to every bot in the room, so two bots race for one row and only the winner sends. A bot that cannot greet does not enter the race |
| The record | One row per member per room, forever. A failed send keeps the claim, and no operator reset exists |
| Copy | There is no shipped greeting text at all: it is entirely operator-authored, and the default of empty means silence. The member and group names are filled by the application in one non-recursive pass, and the model neither writes nor sees the greeting |
They race, and one row settles it
Two bots in a room both see the arrival. The record decides which of them speaks.
Why it is a race at all
Two bots in one room both see the arrival, and they cannot both greet. The record is keyed on the member's wire identity, which the network issues identically to every bot present, so the two race for one row and only the winner speaks.
That you were greeted once, so you are not greeted twice. Deleting it would make her greet you again as a stranger.
Nothing shipped, and nothing written by her
The greeting is the operator's text or there is no greeting. The model neither writes it nor sees it.
Empty means silence
There is no shipped greeting text at all. The default is empty, and empty means silence: a bot with nothing written says nothing rather than falling back to something friendly. The member and group names are filled in by the application, in one pass that cannot recurse.
She does not write this and never sees it: the words are yours exactly.
Three outcomes, kept apart
A member simply gets no greeting. Which of the three reasons it was matters to the operator, and only one is a fault.
The private route
The private route has three outcomes and they are kept apart: no contact, a group that forbids direct messages, and a real send fault. Only the fault raises an alert. A real send failure is never quietly converted into a greeting in the group, because a message the operator meant to be private is not something to reroute in public.
route: suppressed · reason: disabled
What the first live test cost
On the first live test three members joined, both bots saw every arrival, and no greeting came. One row explained it: the bot without a greeting had taken the exclusive claim first, recorded that it was disabled, and sent nothing; the bot that had words then lost the race and returned silently. A bot that cannot greet no longer enters the race, and those members stay permanently claimed.