Tavora

Guide

Members

Open a member's profile and you have it all: identity, activity, internal staff notes, sanctions with automatic DM, tags, group management. Hierarchical permissions enforced everywhere, audit trail on every action.

1Member list

From the community main menu → Members you see the paginated list of all members with role badges, role filter, tag filter and fuzzy search by @username, name or ID.

Selection and quick actions

Tap a member's number to put them in selection (the box becomes ✅). A 📋 View (N) button appears on top:

  • 1 member selected → opens their full profile.
  • 2+ members selected → opens the bulk view: one confirmation and the action (note, sanction, recognition, tag, invite to groups, kick, ban) is applied to everyone at once.

Bulk actions work on tens or hundreds of members at once, with automatic throttling to respect Telegram rate limits. No bot freezes, no half-finished operations.

Member list with selection, View (N) button, role+tag filters and search
Member list with selection, View (N) button, role+tag filters and search

2Member profile

When you have a single member selected and tap View, their profile hub opens: full identity, join date, groups in the community, counters for proposals/votes/tasks. From there you reach 5 sub-screens:

  • 📝 Internal notes — staff memos with attachments (photos, videos, documents). Editable by the author, deletable per hierarchy, pin to keep the most important on top. "Mine only" filter to see what you've written.
  • 🏷 Tags — colored labels (7 colors + none) with optional emoji (premium too). Up to 20 tags per community, assignable to anyone.
  • 📜 Activity — timeline of everything the member did: proposals created, votes cast, tasks assigned, role changes. Filters by date (24h / 7d / 30d / custom) and by type.
  • ⚠️ Sanctions — see below, dedicated section.
  • 📦 Group management — see next section.

Two direct action buttons on the profile: Change role (modify the member's role) and Ban from organization (definitive removal with optional reason and DM to the member). Two variants: organization only (stays in linked Telegram groups), or organization + groups (kicked from chats too).

Member profile hub with counters, sub-screens and direct actions
Member profile hub with counters, sub-screens and direct actions

3Group management

From the profile → Manage groups you open a hub with two clear choices:

  • ➕ Add to groups — sub-panel with multi-select of invitable groups only
  • ➖ Remove from groups — sub-panel with multi-select of groups the member is in

"Add to groups" sub-panel

In the text you see all community groups split by status: 🟢 Already member, 🎟 Invite already pending, 🚫 Banned from group, 🔒 Bot lacks permissions. Buttons below show only groups where the invite is actually possible — no confusion about what you can and can't do.

Pick as many as you want (checkboxes), then ✉️ Send invites (N) generates single-use links and delivers them to the member by DM. Race-check: before accepting a switch, the bot re-verifies the status — if the member joined/left the group meanwhile, you get a toast and the panel refreshes.

"Remove from groups" sub-panel

Symmetric: the text shows groups they're not a member of (informative), buttons show only groups where they're actually in. Select and 🚪 Kick from selected (N) launches the operation.

Kick: what actually happens

Tavora uses soft-kick: ban + immediate unban. The user loses access to the group but can return if you send them a new invite. No permanent Telegram User ID blacklist.

Telegram errors handled automatically: bot lacks permissions in the group, target is admin/owner (Telegram doesn't allow kicking admins), bot removed from the group, Telegram rate limit, expired file_id. Specific toast for each case, no crashes, no half-finished operations.

Multi-group kicks run in background with throttling (~0.5s between groups) to respect Telegram rate limits. You get immediate feedback ("Kick started from N groups"), the bot keeps responding to everyone else while the effect propagates gradually. Status re-fetch before each kick: if the member already left a group, the skip is logged in the audit with result already_left.

Manage groups hub with Add/Remove choice and sub-panels with targeted multi-select
Manage groups hub with Add/Remove choice and sub-panels with targeted multi-select

4Sanctions and auto-ban

From the profile → Sanctions you open the member's sanction list (active + archived). From here you create a new sanction with reason (max 1000 chars, formatting and premium emoji supported).

When you save, the bot sends a DM to the member with the full reason. If they blocked the bot or never did /start, you get an info toast: the sanction is saved anyway.

Auto-ban threshold

From community Settings, the founder can configure an auto-ban threshold: when a member accumulates N active sanctions, they get banned automatically. Quick values (2, 3, 5, 10) or custom. Can be disabled at any time.

Hierarchical deletion: the founder can delete any sanction, an admin can delete their own and those from staff below, staff can delete only their own. Deleted sanctions remain in soft-delete (recoverable) and are tracked in the audit log.

The member can see their own active sanctions from the community home → My profileMy sanctions. They see only reason, author and date — not the staff's internal notes.

Member's sanction list with automatic DM to the recipient
Member's sanction list with automatic DM to the recipient

5Recognitions

Recognitions are the flip side of sanctions: a way to give a public credit to whoever puts in the work for the organization.

How to write one

From the profile → 🌟 Recognitions open the prompt and send a message with the recognition text. Bold, italic and premium emoji are supported.

What the member sees

The bot sends the member a direct message in private with title, body and organization name, plus a View on my profile button to open the list of received recognitions. The recognition stays visible on the member's profile to anyone who opens it.

Recognition published on the member's profile with formatted title and body
Recognition published on the member's profile with formatted title and body

6Clean dossier

Clean dossier deletes in one shot all notes, sanctions, tags, pending invites and recognitions of the member. Useful when a person starts over.

Founder and admin only. Even a staff member with management permissions can't use this button — it's reserved for system roles.

What is NOT deleted

  • 📜 Activity log — the cleanup action itself is logged, with the count of everything deleted.
  • 🚪 Join/leave history — entry, exit and ban events of the organization remain.
  • 👤 Member identity — the person stays in the organization with their role. Only the "disciplinary dossier" is wiped.

Before applying, you see a preview with counters: "will be deleted: 12 notes, 3 sanctions, 5 tags, 2 invites". Only after explicit confirmation does the action run.

7Organization stats

From the Management menu📊 Stats open the aggregated panel of the organization. A snapshot of overall health. Visible only to founder and admin.

The 5 sections of the panel

  • 👥 Membership — total members, breakdown by role, joins/leaves/bans in the last 30 days.
  • ⚡ Engagement — how many distinct people did something in the last 7 and 30 days.
  • 🏆 Top contributors — who created the most proposals, cast the most votes, completed the most tasks in the last 30 days.
  • ⚠️ Moderation — total/active/archived sanctions, manual and auto-bans triggered by the threshold.
  • 📈 Participation — percentage of approved proposals and completed tasks.
Organization stats panel with membership, engagement, top contributors, moderation, participation
Organization stats panel with membership, engagement, top contributors, moderation, participation

8Join/leave history

From the Member list📋 Join/leave history open the complete log of joins, leaves and bans (manual, automatic and legacy) that occurred since the organization exists. A single chronological view, distinct from the per-member log.

Filters

  • Event type: All, 🟢 Joins, 🚪 Leaves, 👢 Kicked, 🚫 Banned, ⚙️ Auto-ban.
  • Period: always, 24 hours, 7 days, 30 days, or custom range (interpreted in your time zone).

What you see for each event

  • Date and time.
  • Member involved, with direct link to their Telegram profile.
  • Who performed the action ("system" for auto-bans and spontaneous joins).
  • Optional reason.
  • Ban scope (organization only, or organization + groups).

9Adding members

Two ways to bring new people into the organization.

  • Invite link — from the main menu → Invite. Share it wherever you want: whoever opens it joins (or ends up in the approval queue, if active).
  • Command /add @user1 @user2 — from a connected group (with the bot as admin): instantly adds to the organization the members already in that group, even several at once.

Invites via link end up in the "Pending invites" panel of the member profile: if they aren't used within 24 hours, the link is revoked automatically. The /add command, instead, adds right away and creates no pending invite.

To add already-registered members to specific Telegram groups, see the Group management section: from the member list you can select N people, choose the groups, and the bot sends invite links to each in private.
Two ways to add members to the organization: invite link and /add @username
Two ways to add members to the organization: invite link and /add @username

10Join requests

When manual approval is on (community Settings), new users who use the invite link don't join immediately but end up in a queue. From Management → Requests:

  • Accept individual requests or Reject
  • Accept all — a single button to clear the queue in one shot

On the Management button of the community home a 📬N green badge appears when there are pending requests, and 🎟N when there are pending group invites not yet used. Push reminders every 2 hours if the queue stays full — silenceable from Settings.

Pending join requests with Accept/Reject actions
Pending join requests with Accept/Reject actions

11Transfer ownership

To hand the community to another member: Management → Settings → Transfer ownership. Enter the recipient's numeric ID (they can get it via the /myid command).

The recipient must accept the transfer from the bot before ownership changes. You stay Founder until they accept. If they decline, the request expires after a few days.