Add the group
You need three things:- The group id (a negative number).
- The user id of every human in the group, including you.
- The node (working folder) this group should use.
--id=-100…. A bare -100… is read as a flag and the command fails.
Repeat --member once per person. Do not list the bot itself. --label is a name for your own list. --node is required. --profile picks a bot other than the default. Each bot has its own list.
group rm.
In a private chat, the owner can send /group to see the same list: id, label, chime, node, and member ids.
Find the ids
Each person. They open a private chat with this bot and send/whoami. Use the Chat number. It is positive.
The group. Copy a message link.
- A link like
https://t.me/c/1234567890/10means the id is--id=-1001234567890. Put-100in front of the number after/c/. - In Telegram Web, the open chat address often ends in the id itself, already starting with
-100.
https://t.me/some_name/10 is a public name. It does not contain the numeric id. Use a link that contains /c/, or the -100… id from Telegram Web.
Member count
Telegram does not give the bot a member list. Telekit checks a count instead.telekit group list prints Telegram’s count and the count it expects:
people you listed + this bot + bots you named with ignore-bot.
Those two numbers must match. If they do not, the line says mismatch and the bot stays silent.
A person who is in the group but not listed breaks the count. A listed person who has left breaks it too. Another bot that was already in the group breaks it until you add that bot’s id with ignore-bot.
The check runs again when someone joins or leaves, and about every 10 minutes otherwise. If Telegram cannot be reached, the bot stays silent.
Privacy mode
Privacy mode is a per-bot setting in BotFather. It is on by default. While it is on, the bot in a group only sees commands, @mentions, replies to itself, and join or leave notices. It cannot decide when to speak. Turn it off for the bot you add to the group:- Open BotFather.
- Send
/setprivacy. - Choose the bot.
- Choose Disable.
Which folder it uses
--node is fixed for that group. The group does not follow /node from your private chat. It uses that node’s default thread only.
The group has its own session, separate from every private chat. It uses the harness this Mac was set up with. /harness in a private chat does not change the group. You cannot switch node, thread, or harness from inside the group.
A daemon restart makes the bot quiet until someone speaks again. The group’s agent thread is kept. The allow list and the chime mode are kept.
When it speaks
Three things get an answer immediately:- An @mention of this bot.
- A reply to one of this bot’s messages.
- A command this bot does not reserve (an unknown
/foostarts an answer).
| Posture | What the bot does |
|---|---|
| Answer | Answers the group. |
| Aside | Speaks on a short fact the group just got wrong. |
| Ask first | Speaks to ask whether the group wants input. |
| Wait | The people are still talking. It may wait through two quiet gaps, then drop it. |
| Silent | Says nothing. No agent turn starts. |
telekit jev set-key (same key as Mac app Settings › Agent). telekit group list prints jev key: missing when it is not set. Without the key, the bot only answers a command, an @mention, or a reply.
/chime
/chime works in the group only. It is saved for that group. Bare /chime shows the current mode.
| Mode | Behavior |
|---|---|
normal | Default. The table above. |
quiet | Speaks on its own only for a real answer. No aside. No “want me to weigh in?” |
off | No unprompted speech. Commands, @mentions, and replies still get an answer. |
/chime replies that chime is for a group.
Commands that work in a group
| Command | In a group |
|---|---|
/stop, /x | Cancel this group’s running turn. |
/status, /s | Lane snapshot. |
/chime | Show or set this group’s mode. |
@mention, reply, unknown /foo | Start an answer now. |
/restart, /node, /harness, /skill, /pw, /help, /group, and the other owner commands | Ignored. No reply. |
/group is owner-only, and only in a private chat.
The group is not behind the passcode. /pw in the group does nothing.
What a group turn can do
The bot is a member of the group, not the owner. Every line is untrusted, including yours. A group turn can read. It can look up files in the group’s node and look things up on the web. It replies in text, in the group. It cannot edit files, run shell commands, start other agents, send files, or message anyone outside the group. A second message does not steer a turn that is already running. A new @mention or reply starts its own answer after that.Photos, files, and voice
A photo, file, or voice note in the group is ignored, unless that message also @mentions the bot or replies to it. When the message does mention or reply, the bot sees the words (the caption). It does not receive the file. Voice notes in a group are not transcribed. Send those in the private chat. See Voice notes and Files. An anonymous admin message has no person id. The bot ignores it.When it stays silent
Check these in order:telekit group list— the group is listed, and the two counts match.- Every human currently in the group is a
--member. Nobody who left is still listed. - Other bots are on
ignore-bot. - Privacy mode is off for this bot. If it was already in the group, it was removed and added again.
- The node you set still exists on this Mac.
- For unprompted speech: chime is not
off, andjev keyis notmissing. - You are not past 3 unprompted replies in the last hour. An @mention still works.
~/.telekit/bridge.log. A skipped group line looks like dropped:group-unknown, dropped:sender-unknown, or dropped:roster-mismatch. A photo or file with no mention looks like dropped:group-media. An owner command in the group looks like dropped:group-command.