Privacy
What each bot in Tiny Telegram Tools stores, in plain terms.
Every bot only stores what it needs to do its one job — there's no third-party analytics SDK, no ad network, and data is never sold or shared with anyone outside running the bot itself. Where a bot doesn't need message content to work (for example GroupPulseBot's activity counts), it only stores counters, not text.
Every bot also records, per user id, a first-touch funnel of a few product events — start, action, pro prompt shown, invoice sent, paid — and the acquisition source encoded in the /start deep link you arrived from (for example, this site or a shared link). This is internal product-usage tracking, not third-party analytics: it's stored in the bot's own database, used only to see which steps people drop off at, and never leaves the bot.
Quality assurance note: a small set of reserved test user and group ids is used internally to validate payments and stats before release; these are excluded from every bot's public statistics.
WhisperLockBot
- Message text you write is stored in a `whispers` row (sender id, sender name, target, body, reveal count) so it can be shown again when the recipient taps it.
- Your Telegram user id, username, and Pro status are stored in a `users` row.
- No message content is shown to anyone except the addressed recipient and you, the sender; other chat members only ever see the locked card.
NudgeRemindBot
- Each reminder is stored as a row with your user id, chat id, the reminder text (`body`), fire time, and repeat interval, so the 1-minute cron can find and deliver it.
- Your Telegram user id, username, timezone offset, and Pro status are stored in a `users` row.
- Reminder text is only ever sent back to the chat it was created in.
AnonInboxProBot
- Incoming anonymous messages are stored in a `messages` row (owner id, sender id, body) so you can read and reply to them.
- A `sessions` row tracks that you're mid-conversation; `link_opens` counts visits to your link; `blocks` stores who you've silently blocked.
- The sender's Telegram identity is never shown to the owner on the free tier; Pro adds limited hints, not the sender's full identity.
SplitTabsBot
- Each group's ledger is stored per chat: a `groups` row (title, Pro flag), `members` (handles seen in the chat), and an `expenses` row per entry (payer, amount, description).
- No banking or payment details are ever stored — /settle only calculates and displays a settlement plan; it doesn't record or move real money.
- Data is scoped to the group chat it was entered in; /clear wipes that group's ledger.
HabitStreakProBot
- Each habit is stored as a `habits` row under your user id; daily check-ins are stored in `checkins` (habit id, day) — just a date marker, no notes or content.
- Your check-in hour and timezone are stored in a `prefs` row; a background check runs every hour and prompts you once a day, at your chosen local hour.
- No habit data is shared to any group or other user — it's private to your account and visible in the Mini App board.
EventRSVPProBot
- Each group's events are stored per chat: `events` (title, time, creator, card message id) and `rsvps` (one row per user per event, so a repeat tap moves you between buckets instead of duplicating).
- Names shown on the event card come from your Telegram display name, capped at 30 names per bucket before it switches to a '+N more' count.
- Cancelling an event marks it cancelled rather than deleting history, so the group's event id numbering stays consistent.
AnonSayProBot
- Anonymous posts are stored in a `posts` row (chat, message id, sender id, body) — the sender's identity is kept internally so /reveal and /ban can work, but is never shown to other group members.
- A per-group `salt` is generated once and used to hash the sender id shown to admins via /reveal, so the hash isn't reversible without the bot's data.
- `bans` stores a silent per-group block list; `admin_cache` caches admin-status checks for 10 minutes to avoid hammering Telegram's API.
- Posts are purged automatically after 30 days.
PartyPackBot
- The bot stores which prompts each chat/category has already shown (`seen`), the Spicy toggle per chat (`chats`), and recent members per chat (`members`) so "Next player" can pick someone.
- No prompt responses or personal answers are stored — only which prompt indexes have been shown, to avoid repeats.
- Spicy content is tasteful 18+ only — no explicit sexual content, no illegal acts — and is off by default even for Pro users.
GroupPulseBot
- Only counters are stored: `counts` (per chat, user, day: text/media/other counts) and `hours` (per chat, day, hour) for the busiest-hour stat — never message text.
- `members` stores a display name and last-seen timestamp per chat so leaderboards and /quiet can show who's who.
- Data is retained 14 days on the free tier and 90 days on Pro, then cleaned up automatically; /reset (admins only) wipes a group's data immediately.
WhenIsItBot
- Each member's saved timezone and preset zones are stored under their user id; named /team sets are stored per group for Pro.
- No message content is stored — only zone names/offsets you explicitly save with /tz, /preset, or /team.
- Daylight saving offsets are computed live via the JavaScript Intl API rather than stored, so they're never stale.
BirthdayBot
- Each member's birthday is stored per group as day and month, plus an optional year if you choose to include one — nothing is stored beyond what you send with /bday.
- A birthday saved in one group is not shared with any other group the bot is in; leaving a group and asking the bot to forget removes that row.
- The day-before DM reminder (Pro) only reaches members who have started a private chat with the bot; it never messages someone the bot can't already DM.
CountdownBot
- Each group's countdowns are stored per chat: target date, label, creator id, and the message id being edited daily — no personal data beyond who created it.
- Ending a countdown marks it stopped rather than deleting the row, so the group's countdown id numbering stays consistent.
- The bot only edits the one message it posted for each countdown; it doesn't read or store any other group messages.
StandupBot
- Your DM answers to the 3 standup questions are stored per group, per member, per day, and are shown in that group's compiled report — they are not shared with any other group the bot is in.
- Members who haven't started a private chat with the bot can't be DMed and are skipped from that day's round automatically.
- Free groups keep only today's report; Pro groups keep 30 days of report history, after which older reports are cleaned up automatically.
VocabBot
- Each word's review schedule (last answer, next-due date, an easiness value) is stored per user, per word, so the SM-2-lite spacing can decide when that word comes back.
- Your Know/Don't know taps are only used to update that schedule — no answer text or free-form input is stored, since the interaction is button-only.
- Switching packs keeps your progress on the previous pack rather than deleting it, in case you switch back later.
FocusBot
- The bot stores each completed session's length in minutes, per user, per day, to build your daily total and streak — it doesn't know what you actually worked on, only how long the timer ran.
- Group "study together" sessions store who joined a given session so the end-of-session summary can name them; that membership isn't kept beyond the summary.
- Stopping a timer early (/focus stop) logs only the minutes actually completed, not the originally requested length.
BudgetTrackBot
- Each expense you log — amount and the note text you sent — is stored per user, so /today, /week, /month, and CSV export can total and list them back to you.
- The category is guessed from keywords in your note and stored alongside the expense; it's only ever used to build your own totals.
- This is a DM-only bot — nothing you log is posted to a group or visible to anyone but you.
HoursTrackBot
- Each time entry — duration, client name, and any task note from /log — is stored per user, so /week, /month, and CSV export can total and list them back to you.
- A running /in clock is stored as an open entry with its start time until you /out; if you stay clocked in past 10 hours, the bot DMs you a reminder to close it out.
- This is a DM-only bot — client names and task notes aren't shared or posted anywhere beyond your own totals.
IcebreakerDailyBot
- The bot stores which question it posted to each group and when (`posted`), so it can avoid repeats and know when the next day's question is due.
- Reply counts per posted question are stored per group — how many members replied — used only to show the group its own engagement, never the reply text.
- No message content, questions or replies, is stored beyond that reply count; the bot doesn't read or keep what members actually write.
SantaDrawProBot
- Participants, their drawn match, and any wishlist text sent with /wish are stored per exchange, per group, so matches can be delivered and wishlists forwarded to the right Santa.
- This data is kept until the exchange date the organizer sets, plus 30 days, then deleted automatically; an organizer can also end an exchange early to remove it sooner.
- Matches are only ever sent privately by DM to each participant — the group chat never sees who has who, and only members who've started a private chat with the bot can be matched.
TriviaDailyBot
- The bot stores each member's correct-answer count per group, per week (`scores`), read from Telegram's own quiz poll results, to build /leaderboard.
- Scores reset every Monday for the weekly leaderboard; Pro's monthly tally is kept only long enough to announce that month's champion, then reset.
- No answer content beyond Telegram's own poll results is stored — the bot doesn't see or keep anything members type outside of tapping a poll option.