# LaPoe documentation

> Everything about running an AI assistant in a Telegram group and on your website: setting
> one up, teaching it what you know, keeping the chat clean, and fixing it when it misbehaves.

Plain-text twin of <https://lapoe.app/docs>, served to AI crawlers and to anyone requesting
`Accept: text/markdown`. Every heading below is named after an anchor on that page, so
`introduction` here and `/docs#introduction` there are the same topic.

## introduction: What is LaPoe?

LaPoe is an AI assistant for Telegram groups. You give it your knowledge (a website URL, an
FAQ, your house rules) and it answers your members' questions in your voice, moderates the
chat against the rules you wrote, and hands you everything it could not answer so you can
teach it once.

Two ways to run it: the shared **@LaPoe_bot** is free and needs no setup beyond adding it to a
group, or you mint your own bot in Telegram's @BotFather and run it under your own name and
avatar. Both are configured from the same dashboard. The same assistant can also answer in
your Telegram Mini App or on your website through Miniapp chat.

It is not a general chatbot bolted onto Telegram. It does not answer from the open internet
unless you switch web search on, it does not invent a policy you never wrote, and it does not
join a conversation between two humans uninvited.

## how-it-works: How LaPoe works

1. Telegram passes each message to LaPoe as it arrives. If delivery is briefly interrupted,
   the messages are picked up once it resumes.
2. Deterministic checks run first: content locks, banned words, captcha state, anti-flood.
   No AI, no cost. If one handles the message, nothing else runs.
3. The AI moderator looks at what is left, but only if you enabled it and only if the bot is a
   Telegram admin. It reads your group's rules as context first.
4. The reply policy decides whether to speak at all. Most group messages are not for the bot.
5. Relevant knowledge is retrieved and given to the model with your persona and rules. The
   reply is checked before it is sent.
6. Everything is written down: replies in Messages, unanswered questions in Inbox, every
   moderation action in the log.

## use-cases: Who LaPoe is for

Ecommerce and DTC brands (order, shipping and returns questions; scam links kept out of the
VIP group). Web3 and token communities (repeat contract questions, impersonator protection,
captcha on join). SaaS and developer tools (docs and changelog as self-serve support).
Creators and course communities (welcomes, FAQ, on-topic chat). Support teams (repeat
questions off the queue in groups and on the website, everything logged).

## quickstart: Quickstart: the free shared bot

1. Create a LaPoe account at <https://lapoe.app>. No card.
2. In Settings, tap **Connect via Telegram**. Telegram opens a chat with @LaPoe_bot and one tap
   completes the link. If Telegram does not open, send the code the page shows as
   `/link YOUR_CODE`.
3. Add @LaPoe_bot to your group. Promote it to admin if you want it to moderate.
4. If you created the group, it connects to your workspace as soon as the bot joins. Added the
   bot before linking? Linking connects it. If an admin added it, it connects the first time
   you send a message in it. A group only ever connects to its Telegram creator's account.
5. Add your website URL, FAQ or policies in Knowledge. Indexing takes under a minute.
6. Set name, tone, personality and house rules on the Bots page.
7. Try it in Playground first: same pipeline, same knowledge, nothing posted.

The free plan covers one group and 100 AI replies a month. Commands, moderation and the
dashboard are not metered; only AI replies are.

## quickstart-own-bot: Quickstart: your own bot

On a paid plan you can run bots under your own brand.

1. Message @BotFather, send `/newbot`, choose a display name and a username ending in `bot`.
   It returns an API token.
2. Set the avatar with `/setuserpic` and the intro text with `/setdescription`.
3. **Turn privacy mode off** with `/setprivacy` → Disable. With it on, Telegram only shows your
   bot messages that tag it directly, so it can neither moderate nor notice a question.
4. Paste the token into LaPoe under Bots. LaPoe connects the bot and sets up its command menus.
   Tokens are encrypted at rest.
5. Add the bot to your group and promote it to admin.
6. Assign knowledge sources to it. Each bot can read different things.

If the bot joins but never speaks, privacy mode is almost always the cause. Turn it off, then
remove and re-add the bot; Telegram applies the setting on join.

## first-week: Your first week

Day 1: add knowledge, write real house rules, leave AI moderation **off**.
Days 2 to 3: read Messages daily and clear the Inbox. Every answer becomes reusable knowledge.
Day 4: turn on banned words and content locks (deterministic, no judgement calls).
Day 5+: turn on AI moderation with admin alerts, so you see every action.
Week 2: tune tone and personality against real transcripts rather than guesses.

## knowledge: Knowledge base

LaPoe answers from a knowledge base you control, and only from it unless web search is on.
Sources can be website pages and blog posts (paste a URL), FAQs and transcripts (plain text),
house rules and policies, or product docs and changelogs.

Good sources are short, factual and single-topic. A 40-page PDF of everything performs worse
than ten focused snippets, because retrieval must pick the right piece before the model sees
it.

When LaPoe does not know something, the question is saved under Questions in your Inbox.
Answer it once, save the answer as a source, and the next person who asks gets it instantly.

Re-crawl a URL source after your site changes. Nothing re-indexes automatically, because
silently changing what your bot believes should not happen without you.

URL sources are fetched server-side behind a destination allowlist: private networks, loopback
and cloud metadata addresses are refused, and every redirect hop is re-checked.

## persona: Persona, tone and house rules

Set on the Bots page. Display name is the in-conversation identity. Tone (friendly,
professional, playful or concise) sets register and length. Personality is a free-text
character sketch. House rules are behavioural boundaries: what never to promise, when to hand
off to a human. Custom instructions override the defaults and should be used sparingly.

LaPoe writes in first-person plural, "we ship on Fridays", not "LaPoe's records indicate the
merchant ships on Fridays". That is most of why it reads as part of the team.

It never guesses about a specific person. Account, order and payment questions are never
answered from general knowledge; it says a team member will check.

## groups: Groups and per-group config

Groups register themselves once the bot has seen a message. Each gets its own page: rules,
moderation switches, web search, and the Command center. Telegram **channels are ignored
entirely**: never treated as a group, never counted against your plan, never replied in.

Setting a group's topic tells the moderator what normal looks like there. "Selling 200 USDT"
is routine in a P2P trading group and a scam signal in a cooking group.

Each group has an **AI replies** switch in Groups. Off, the group keeps its settings and
history, and commands and moderation carry on; the bot just stops answering questions.

## commands: Command center

The dashboard's Command center and the slash commands in Telegram edit the same settings;
change either and the other reflects it.

Your own bot carries the everyday set: warnings, bans, kicks and mutes, notes, filters,
content locks, captcha, anti-flood, pins, `/report` and `/feedback`. A few commands are on the
shared @LaPoe_bot only: `/setwelcome`, `/setgoodbye`, `/setrules`, the banned-word commands,
`/setwarnlimit`, `/unwarn`, `/resetwarns`, `/promote`, `/demote` and `/purge`. For your own
bot, set those things in the dashboard instead. The dashboard only shows a group the cards its
own bot implements.

**Messages:** `/setwelcome <text>`, `/setgoodbye <text>`, `/setrules <text>`, `/rules`,
`/setlang <code>`. Welcome and goodbye support `{user}`, `{mention}` and `{group}`.

**Moderation:** `/warn`, `/unwarn`, `/warns`, `/resetwarns`,
`/setwarnlimit <n> [kick|ban|mute]`, `/ban`, `/unban`, `/kick`, `/mute`, `/unmute`,
`/banword <word>`, `/unbanword`, `/banwords`, `/lock`, `/unlock`, `/antiflood on|off`,
`/setfloodmode`, `/moderation on|off`, `/captcha on|off`, `/promote`,
`/demote`, `/purge`, and `/del` on your own bot. Member actions require replying to that
member's message.

**Utilities:** `/addnote <name> <text>`, `/get <name>`, `#name`, `/notes`, `/clearnote`,
`/filter <word> <reply>`, `/stop`, `/filters`, `/pin`, `/unpin`, `/report`,
`/mute_notifications`, `/id`, `/info`, `/help`, `/support`.

**Auto-reply filters in detail.** `/filter price | Pricing is in the pinned post.` saves a
trigger and the reply it gets. Everything before the `|` is the trigger, so it can be more than
one word. A one-word trigger matches whole words only: `hi` answers "hi there" but stays quiet
inside "this" or "chill". A trigger with a space or punctuation in it matches anywhere in the
message. `/filters` lists what a group has, with each reply, and `/stop price` removes one and
says so if there was nothing to remove. A filter reply ends the message there: the AI never sees
it, so nothing is metered. The same filters are editable from the group's Commands page in the
dashboard.

Commands work on every plan including free, and keep working when AI replies are off or the
monthly AI allowance is spent. Only AI replies are metered.

## web-search: Web search

Off by default for every group. With it off, the bot answers strictly from your knowledge base
and says plainly when something is not covered. That is the right default for a support bot: a
confident wrong answer sourced from a random blog is worse than "I don't have that". Turn it on
per group, in the group's settings, when the group depends on current outside information.
Available from the Starter plan. Your knowledge base always wins where the two disagree.

## auto-learn: Auto-learn and corrections

When an admin corrects the bot in the group, the correction is captured and applied to later
answers on the same subject. Switch it on with **Learn from corrections** on the bot's page;
available from Starter. Corrections are taken from group admins and the workspace owner only,
never from ordinary members. Admin messages that read like durable knowledge are also buffered
and periodically summarised into a per-group source you can review, edit or delete.

On Pro, **Let it ask me in the Inbox** lets the bot ask you when two of your own sources
disagree and it cannot tell which is right. At most twice a week.

## website-chat: Miniapp chat

Miniapp chat puts a chat button in your Telegram Mini App or on your site, answered from the same knowledge and persona as
your Telegram groups, with every conversation kept in your dashboard.

1. Open Miniapp chat in the dashboard and add a site. Each site gets a one-line snippet.
2. Under **Allowed domains**, list every domain the chat will appear on. It refuses to load
   anywhere else.
3. Paste the snippet into every page that should show the chat. The install shows when it
   last saw your site.

**Appearance**: title, logo, accent colour, corner, launcher text, a nudge above the launcher,
and a home screen with a headline and up to six links. **Messages**: the first message, the
status line while open and while closed, suggested openers. **Answering**: which bot answers,
and whether visitors can ask for a person.

With **Let people reach a person** on, a visitor can ask for a human at any point. You get an
alert and the conversation waits under Conversations in your Inbox. Set business hours and a
message visitors see when nobody is around.

Optional page controls: `LaPoe.open()` and `LaPoe.close()` for your own button. Call
`LaPoe.reset()` when someone signs out of your site, so the next person on that computer does
not see their conversation.

Website replies count against the same monthly AI allowance as your groups.

## moderation: AI moderation

Off by default, enabled per group, and requires the bot to be a Telegram admin. It reads your
group's stated rules and topic before judging anything. Universally malicious content
(phishing, scam links, hate speech) is handled regardless of your rules.

Escalation is by accumulated strikes in that group: 0 to 2 warn or delete, 3 to 5 mute, 6 to 9
kick, 10+ ban. A ban needs four things at once: the model calls for it, at high confidence,
with the ban action enabled for that group, and the member already at ten strikes. Any one
missing and it de-escalates.

Controls: per-action toggles, a confidence threshold, admin alert DMs, and a hard exemption for
group admins and the workspace owner. First-offence warnings are whispered to the member
rather than posted publicly. Every action is logged with its reason, and bans and kicks carry a
one-click undo.

## banned-words: Banned words

A plain substring match, checked before any AI. On a match: delete, warn, mute, kick, or ban.
Use it for things you never want debated: a specific scam domain, competitor invite links,
slurs. Anything nuanced belongs to the AI moderator, because substring matching cannot tell
"Scunthorpe" from an insult. The notice posted on a match is a template you write.

## locks: Content locks

List content types that are not allowed and the bot deletes them on sight. Admins are never
affected. Works the same on the shared @LaPoe_bot and on your own bot.

Types: `sticker`, `gif`, `photo`, `video`, `voice`, `document`, `link`, `invite`, `forward`,
`mention`, `poll`, `contact`, `location`, `game`, `email`, `phone`.

Edit the list in the Command center, or from Telegram with `/lock sticker gif` and
`/unlock link`. Plurals and obvious synonyms work. `/lock` with no argument still locks the
entire chat so only admins can post; `/unlock` reopens it.

## captcha: Join captcha

`/captcha on` keeps new members muted until they prove they are human, with a tap-to-verify
button or a small maths question. `/captcha off` lets them post as soon as they join, and lets
in anyone still waiting to verify. Works the same on the shared @LaPoe_bot and
on your own bot. The challenge is shown only to the new member; nobody else in the group sees it.
Anything they send before verifying is deleted.

When the timeout runs out (five minutes by default) you choose what happens: keep them muted
(the default, so an admin can let them in later), remove them so they can rejoin and try
again, or ban them. Set it on the group's Commands page, or with `/captcha on mute`,
`/captcha on kick` or `/captcha on ban`.

## antiflood: Anti-flood

Anti-flood is off in every group until somebody switches it on. Nobody is muted for typing
quickly unless you decided they should be.

When it is on and one member exceeds the limit inside the window, the bot applies your action
and posts a short notice. Three ways to set it, all writing the same thing:

- `/antiflood` on its own reports what the group is set to and changes nothing.
- `/antiflood on 8 10s` reads as eight messages in ten seconds. Either number can be left out
  to keep what is there, so `/antiflood on` simply switches it on.
- `/setfloodmode mute 1h` chooses what happens to somebody who trips it: mute, kick, ban, or a
  timed mute or ban.

The same settings live under Anti-flood in the group's settings in your dashboard, and
`/antiflood off` keeps your numbers so turning it back on restores them.

This is per group, and works the same on the shared @LaPoe_bot and on a bot you created.

Separately, an always-on rate limit protects the AI itself: a member firing the same question
repeatedly gets one answer, not one per message. Rapid bursts are dropped silently, so a single
person cannot burn your monthly allowance or fill the chat with near-identical replies.

## reply-rules: When the bot speaks

It replies when directly mentioned or called by its full name, when someone replies to one of
its messages, when a real question matches your knowledge and is on-topic, when the person it
is talking to carries on within five minutes or answers a question it asked within fifteen,
and when someone says hello (once).

It never interrupts a reply directed at another human, never greets the same person twice
within ten minutes or answers a wave of hellos from several people, never reacts to every
"thanks", never chimes in on off-topic chatter, never replies to another bot, and never answers
a backlog after downtime: anything older than two minutes is dropped.

"Not you", "I wasn't talking to you" or "nobody asked" ends its part in the conversation. It
does not reply to that, and stops treating that person's next messages as meant for it.

If it feels too quiet, the usual cause is a thin knowledge base; the second is privacy mode
still enabled in BotFather.

## language: Languages

**By default LaPoe replies in whatever language the person wrote in**. Arabic in, Arabic out;
Swahili in, Swahili out. It matches dialect where it can and never claims to speak only
English. Your knowledge base can be in one language while members write in five.

`/setlang` sets a **default, not an override**. Some messages carry no language signal at all:
a bare link, an emoji, "ok", a photo with no caption, the first greeting in a new group. The
group language is what is used for those.

It will not force a language. Set a group to Spanish and someone writes in English, they still
get English. Forcing one language would break every mixed community, which is most of them.

Sixteen languages: English, Spanish, French, German, Portuguese, Italian, Arabic, Swahili,
Hindi, Indonesian, Turkish, Russian, Ukrainian, Chinese, Japanese, Korean.

Fixed text is not translated: command confirmations, welcome and goodbye messages, banned-word
and flood notices. Those are templates you write yourself, so they are already in your
language. `/setlang` affects the AI's replies, not your own copy.

## dm-policy: How DMs work

A custom bot answers a deliberately small set of commands in private chat: `/start`, `/help`
and `/feedback <message>`, which leaves a note in your Inbox. Anything else gets a polite
pointer to the group or the website.

Not even the owner configures a bot in its own DMs. End users share that same surface, so
exposing configuration there would leak that it exists and invite social engineering.

The shared @LaPoe_bot does more in DMs because it can authenticate you: `/link`, `/unlink`,
`/status`, `/mybots`, `/createbot`, `/support`, `/feedback`, with the common ones on buttons
under the message box. It does not hold open-ended conversations in DMs.

The two `/feedback` commands are not the same command. On your own bot it reaches you, its
owner. On @LaPoe_bot it reaches the LaPoe team and never touches your workspace. It is how
someone in a group tells us the product is broken without going through that group's admins.

## system-bot: The shared @LaPoe_bot

A shared assistant we run for everyone. It gives free AI replies in your group using your
persona and sources (100 a month on free), the full group toolkit, and account control from
Telegram once your account is linked.

Sharing a bot does not mean sharing knowledge. Each group is answered strictly from its own
workspace's sources and persona. One community's knowledge never reaches another's chat.

### Both bots in the same group

You can have @LaPoe_bot and your own bot in one group at the same time. Your own bot answers,
moderates and greets; @LaPoe_bot steps back from those, so a single banned word is not deleted
twice and one join does not get two welcomes.

A bare `/warn` in such a group goes to your bot. Address @LaPoe_bot explicitly, as
`/warn@LaPoe_bot`, if you want that one instead.

Removing a bot from a group does not erase the group's settings. The group disappears from
your dashboard while the bot is out, and everything comes back as it was if you add it again.

## messages-inbox: Messages, Inbox and notifications

**Messages** holds every reply your bot has sent with the original question, group, member and
source used; its Logs tab holds every moderation action, with undo on bans and kicks.
**Inbox** has two tabs: Conversations, for website visitors who asked for a person, and
Questions, for what the bot could not answer plus member feedback from `/feedback`.
**Notifications** carries system updates, plan changes, group reports and borderline moderation
events.

The Inbox is the highest-value screen in the product: a question there is a member who did not
get helped, and a fix that takes one sentence.

## billing: Plans and billing

| Plan | Your own bots | Groups | AI replies / month |
| --- | --- | --- | --- |
| Free | none, uses shared @LaPoe_bot | 1 | 100 |
| Starter | 1 | 2 | 1,000 |
| Pro | 3 | 6 | 5,000 |
| Business | custom | custom | custom |

Free showing no bots is deliberate, not a gap: a free account runs on the shared assistant,
which costs it none of its own bot allowance.

Only AI replies count against the monthly number. Commands, moderation, welcomes, filters,
notes and the dashboard are unmetered on every plan.

From Starter: your own branded bots, reading images sent to the bot, web search, and learning
from admin corrections. From Pro: listening to voice notes, and asking you in the Inbox when
your sources disagree.

**Invite & earn** in the dashboard gives you a link to share. You earn 10% of every
subscription payment from the people who sign up through it, for as long as they stay
subscribed.

## status: System status

<https://lapoe.app/status> shows live health for the dashboard, database, shared @LaPoe_bot and
the customer bot pipeline, plus 30-day uptime.

## channel: Getting help

The LaPoe support channel is at <https://t.me/LaPoeAI>. It is where to ask for help, and where
new features, changes to existing behaviour and outages are announced, so it is also the fastest
way to find out why something works differently today than it did yesterday. Suggestions go
there too.

**Help & support** at <https://lapoe.app/help> has short video guides, and the email
address for anything they do not cover. Anyone can open it, signed in or not.

`/support` gets you the link from inside Telegram, in a DM with @LaPoe_bot or in any group it is
in. Any member can run it, and `/start` and `/help` carry a button to it.

Nothing announces this channel inside a group you run. It is not in the welcome message, the
moderation notices or any automatic reply your members see. The bot mentions it only when
somebody types `/support`.

## security: Security and privacy

Your knowledge base, conversations and settings are yours. They are not sold, shared, or used
to train shared models. Bot tokens are encrypted at rest and never shown back in the browser.
Workspaces are kept apart by the database itself: one workspace cannot read another's data,
whatever the app asks for. Connecting a group requires its Telegram creator. URL sources are
fetched behind an allowlist refusing private networks, loopback and cloud metadata addresses,
re-checked on every redirect. Reports are anonymous: admins are pinged without the reporter's
name appearing in the group. Any source or message can be deleted at any time, and closing your
account starts a grace period during which you can change your mind.

## troubleshooting: Troubleshooting

- **Never replies in the group**: privacy mode still enabled in BotFather. Disable it, then
  remove and re-add the bot.
- **Replies to mentions but ignores questions**: working as designed until your knowledge
  covers the question. Add a source, or tag the bot.
- **Moderation does nothing**: the bot is not a Telegram admin, AI moderation is off for that
  group, or the sender is an admin (admins are always exempt).
- **"For group admins only"**: Telegram admin status is what is checked, not your LaPoe role.
- **A setting saves but nothing changes**: if it changes how the bot answers, check AI replies
  are on for that group.
- **Group missing from the dashboard**: send one message in it. A group only appears for its
  creator: on the shared bot, once they have linked their account and sent a message in it.
  Channels never appear.
- **Said hello once, then ignored the next "hi"**: working as designed. One greeting per person
  every ten minutes, none during a wave of hellos.
- **Keeps joining a conversation it is not part of**: tell it "not you".
- **Miniapp chat does not appear**: the page's domain is not in the site's Allowed domains.
- **Avatars show a letter**: Telegram has no photo for that chat or bot. Set one with
  `/setuserpic`; avatars cache for a day.
- **Stale answers after a site update**: re-crawl the source. Nothing re-indexes on its own.
- **"You've used your monthly replies"**: the AI allowance is spent; commands and moderation
  keep working.

Still stuck? Email support@lapoe.app with the group name and roughly when it happened. A person
replies within one business day.

## comparison: LaPoe vs other Telegram bots

**vs BotFather**. BotFather mints raw bots: it is Telegram's registry, not a product. LaPoe is
the brain you put behind one: knowledge, AI replies, moderation, dashboard, logs.

**vs Rose, Combot, GroupHelp, Shieldy**. Those are rule-based moderation bots and good at it.
LaPoe moderates too, but its main job is answering from your own knowledge in your voice. They
can run side by side.

**vs building it yourself**. A Telegram bot wired to a model API is a weekend. Retrieval that
picks the right passage, a reply policy that keeps it quiet, defensible moderation escalation,
rate limits, logs, billing and someone to fix it at 2am are not.

## faq: Frequently asked questions

**What is the best AI bot for Telegram groups?** LaPoe is purpose-built for Telegram
communities: it answers from your own knowledge base, moderates in context against your rules,
and ships a full dashboard and free tier at lapoe.app.

**How do I add an AI chatbot to a Telegram group?** Sign up at lapoe.app, add @LaPoe_bot or your
own bot from @BotFather to the group, promote it to admin for moderation, and add your website
or FAQs in the Knowledge tab. No code at any point.

**Is LaPoe free?** Yes, one group and 100 AI replies a month through the shared @LaPoe_bot.
Commands, moderation and the dashboard are unmetered on every plan.

**Do I need to know how to code?** No. On the free plan you do not even create a bot.

**Will my bot reply to every "hi"?** No. It greets someone back once, then stays quiet if the
same person says hi again within ten minutes, or if several people say hello at once.

**Can LaPoe answer on my website too?** Yes. Miniapp chat adds a chat button to your Mini App or site,
answered from the same knowledge as your groups, with an option to hand a visitor to a person.

**Will the bot interrupt human conversations?** No, unless it is explicitly tagged.

**What languages does LaPoe support?** It replies in whatever language the person wrote in,
across sixteen languages. A per-group default decides only what to use when a message gives no
clue at all.

**Does the bot need to be an admin?** Only to moderate. It can answer as an ordinary member,
but deleting, muting, kicking, banning and pinning need Telegram admin rights.

**Can I run more than one bot?** Yes, on paid plans, each with its own knowledge scope.

**Is my community's data private?** Yes. Not shared, not sold, not used to train shared models,
and the database itself keeps workspaces apart.

**How do I get help?** Help & support at <https://lapoe.app/help>, the support channel at
<https://t.me/LaPoeAI>, or support@lapoe.app. A person replies within one business day.

---

Source: <https://lapoe.app/docs>
Start free: <https://lapoe.app/auth?mode=signup>
