[{"data":1,"prerenderedAt":755},["ShallowReactive",2],{"guide-library-en":3},[4,195,266,334,453,556,669],{"id":5,"title":6,"author":7,"body":8,"category":182,"description":183,"extension":184,"language":185,"meta":186,"navigation":187,"order":188,"path":189,"published":190,"readingMinutes":175,"seo":191,"stem":192,"takeaways":193,"updated":190,"__hash__":194},"guides\u002Fguide\u002Fcreate-bot.md","Create a Telegram bot with BotFather","TGDog",{"type":9,"value":10,"toc":171},"minimark",[11,16,20,24,94,99,109,112,120,124,127,139,143,155,159],[12,13,15],"h2",{"id":14},"before-you-create-your-bot","Before you create your bot",[17,18,19],"p",{},"Start with a dedicated bot for TGDog. You need a Telegram account to create it, but you do not need to write code or host a bot server.",[12,21,23],{"id":22},"create-your-bot-in-six-steps","Create your bot in six steps",[25,26,27,43,54,64,78,88],"ol",{},[28,29,30,34,35,42],"li",{},[31,32,33],"strong",{},"Open official BotFather."," Use ",[36,37,41],"a",{"href":38,"rel":39},"https:\u002F\u002Ft.me\u002FBotFather",[40],"nofollow","@BotFather"," in Telegram and press Start if shown.",[28,44,45,53],{},[31,46,47,48,52],{},"Send ",[49,50,51],"code",{},"\u002Fnewbot","."," BotFather will ask for your bot’s display name.",[28,55,56,59,60,63],{},[31,57,58],{},"Choose a display name."," For example, ",[49,61,62],{},"My Community Guard",". This is the name members see.",[28,65,66,69,70,73,74,77],{},[31,67,68],{},"Choose a unique username."," Use letters, numbers, or underscores; it must be 5–32 characters and end in ",[49,71,72],{},"bot",". Example: ",[49,75,76],{},"my_community_guard_bot",". If taken, try another. The example is not a link or an available-name guarantee.",[28,79,80,83,84,87],{},[31,81,82],{},"Save the API token privately."," BotFather returns your bot’s link and token. Copy the token without sharing it. If compromised or lost, use BotFather’s ",[49,85,86],{},"\u002Ftoken"," command to generate a new one.",[28,89,90,93],{},[31,91,92],{},"Connect it inside TGDog."," Open the extension’s Bot connection screen, paste the token, and connect. Confirm the verified bot identity before continuing to the group setup below.",[95,96,98],"h3",{"id":97},"example-botfather-inputs","Example BotFather inputs",[100,101,107],"pre",{"className":102,"code":104,"language":105,"meta":106},[103],"language-text","\u002Fnewbot\nMy Community Guard\nmy_community_guard_bot\n","text","",[49,108,104],{"__ignoreMap":106},[17,110,111],{},"No token is shown or collected here.",[17,113,114,115,52],{},"Creation steps: ",[36,116,119],{"href":117,"rel":118},"https:\u002F\u002Fcore.telegram.org\u002Fbots\u002Ffeatures#creating-a-new-bot",[40],"Telegram’s official BotFather guide",[12,121,123],{"id":122},"protect-the-token-and-prepare-permissions","Protect the token and prepare permissions",[17,125,126],{},"Treat the token like a password. Paste it only into the TGDog extension, never into this website or a support message.",[17,128,129,130,134,135,52],{},"Next, add your bot to a test supergroup and promote it to administrator in the group’s settings. Grant deletion and member-restriction permissions if you plan to use automatic actions. Continue with ",[36,131,133],{"href":132},"\u002Fguide\u002Fconnect-bot\u002F","bot connection and update delivery"," and ",[36,136,138],{"href":137},"\u002Fguide\u002Fgroup-rules\u002F","supergroup permissions",[12,140,142],{"id":141},"check-your-setup","Check your setup",[144,145,146,149,152],"ul",{},[28,147,148],{},"Use the official BotFather account.",[28,150,151],{},"Keep your bot token private.",[28,153,154],{},"Add the bot to a test supergroup before using member actions.",[12,156,158],{"id":157},"where-to-go-next","Where to go next",[17,160,161,162,166,167,52],{},"If you are setting up TGDog for the first time, follow the ",[36,163,165],{"href":164},"\u002Fhow-to-use\u002F","complete How to use tutorial",". For a deeper explanation of another topic, return to the ",[36,168,170],{"href":169},"\u002Fguide\u002F","Guide library",{"title":106,"searchDepth":172,"depth":172,"links":173},3,[174,176,179,180,181],{"id":14,"depth":175,"text":15},2,{"id":22,"depth":175,"text":23,"children":177},[178],{"id":97,"depth":172,"text":98},{"id":122,"depth":175,"text":123},{"id":141,"depth":175,"text":142},{"id":157,"depth":175,"text":158},"getting-started","Create your own bot, protect its token and prepare it for TGDog.","md","en",{},true,1,"\u002Fguide\u002Fcreate-bot","2026-10-09",{"title":6,"description":183},"guide\u002Fcreate-bot",[148,151,154],"RaovPA6xcVOc3kJYJw8UKH0GABBI0G_hNNEkbuDi7_o",{"id":196,"title":197,"author":7,"body":198,"category":182,"description":259,"extension":184,"language":185,"meta":260,"navigation":187,"order":175,"path":261,"published":190,"readingMinutes":175,"seo":262,"stem":263,"takeaways":264,"updated":190,"__hash__":265},"guides\u002Fguide\u002Fconnect-bot.md","Connect your bot: polling, webhooks and Chrome",{"type":9,"value":199,"toc":252},[200,204,207,211,214,217,221,224,231,233,244,246],[12,201,203],{"id":202},"your-bot-connected-locally","Your bot, connected locally.",[17,205,206],{},"Use a dedicated Telegram bot. Enter its token inside the TGDog extension; the website never asks for it. TGDog verifies the bot with Telegram and checks whether a webhook already receives its updates.",[12,208,210],{"id":209},"resolve-update-receiver-conflicts","Resolve update-receiver conflicts",[17,212,213],{},"Webhook delivery and polling cannot receive updates at the same time. TGDog only removes an existing webhook after you explicitly confirm switching reception to the extension. One bot should be used by one receiving client or Chrome profile.",[17,215,216],{},"Your token stays in chrome.storage.local. This is local browser storage, not an operating-system encrypted vault.",[12,218,220],{"id":219},"understand-browser-availability","Understand browser availability",[17,222,223],{},"Chrome must remain running, awake, and connected. Pending Telegram updates are retained for no more than 24 hours; extended downtime may leave gaps. TGDog does not read Telegram Web’s DOM or scan your entire chat history.",[17,225,226],{},[36,227,230],{"href":228,"rel":229},"https:\u002F\u002Fcore.telegram.org\u002Fbots\u002Fapi#getting-updates",[40],"Source: Telegram update delivery",[12,232,142],{"id":141},[144,234,235,238,241],{},[28,236,237],{},"One bot should have one update receiver.",[28,239,240],{},"TGDog needs Chrome to remain awake and online.",[28,242,243],{},"Pending Telegram updates expire after no more than 24 hours.",[12,245,158],{"id":157},[17,247,161,248,166,250,52],{},[36,249,165],{"href":164},[36,251,170],{"href":169},{"title":106,"searchDepth":172,"depth":172,"links":253},[254,255,256,257,258],{"id":202,"depth":175,"text":203},{"id":209,"depth":175,"text":210},{"id":219,"depth":175,"text":220},{"id":141,"depth":175,"text":142},{"id":157,"depth":175,"text":158},"Understand how TGDog receives updates and resolve competing bot connections.",{},"\u002Fguide\u002Fconnect-bot",{"title":197,"description":259},"guide\u002Fconnect-bot",[237,240,243],"K021Mz4OIrlS-4Smg-qcsQYAKxYmeM9xbMlWCu8aRsI",{"id":267,"title":268,"author":7,"body":269,"category":182,"description":327,"extension":184,"language":185,"meta":328,"navigation":187,"order":172,"path":329,"published":190,"readingMinutes":175,"seo":330,"stem":331,"takeaways":332,"updated":190,"__hash__":333},"guides\u002Fguide\u002Fgroup-rules.md","Supergroups, admin permissions and whitelists",{"type":9,"value":270,"toc":320},[271,275,278,282,285,289,292,299,301,312,314],[12,272,274],{"id":273},"keep-each-groups-rules-its-own","Keep each group’s rules its own.",[17,276,277],{},"Add your bot to a test supergroup as an administrator, send \u002Fsetup or a text message, and receive updates in TGDog. Enable that group in Groups & rules. The current version supports enabled monitoring and management for supergroups.",[12,279,281],{"id":280},"copy-settings-without-changing-actions","Copy settings without changing actions",[17,283,284],{},"Search by name or ID, filter groups, and pause observation in bulk. Copying saved detection rules preserves each group’s own whitelist, administrator list, and observation switch. It does not copy the keyword action selection.",[12,286,288],{"id":287},"understand-administrator-and-whitelist-exemptions","Understand administrator and whitelist exemptions",[17,290,291],{},"Administrators and whitelisted user IDs are exempted. Administrator lookup failures are reported for the affected group instead of silently proceeding with uncertain results.",[17,293,294],{},[295,296],"img",{"alt":297,"src":298},"TGDog group dashboard showing search, status filters, and rule controls","\u002Fscreenshots\u002Fgroups-en.png",[12,300,142],{"id":141},[144,302,303,306,309],{},[28,304,305],{},"Enabled management supports supergroups.",[28,307,308],{},"Administrators and whitelisted users are exempt.",[28,310,311],{},"Copying rules does not copy the action choice.",[12,313,158],{"id":157},[17,315,161,316,166,318,52],{},[36,317,165],{"href":164},[36,319,170],{"href":169},{"title":106,"searchDepth":172,"depth":172,"links":321},[322,323,324,325,326],{"id":273,"depth":175,"text":274},{"id":280,"depth":175,"text":281},{"id":287,"depth":175,"text":288},{"id":141,"depth":175,"text":142},{"id":157,"depth":175,"text":158},"Set up supported groups, exempt trusted members and reuse detection rules carefully.",{},"\u002Fguide\u002Fgroup-rules",{"title":268,"description":327},"guide\u002Fgroup-rules",[305,308,311],"6v1CfP1OoaiSwjIjSlB6q8X0V2_HDWkMEnL1HJV0tSY",{"id":335,"title":336,"author":7,"body":337,"category":444,"description":445,"extension":184,"language":185,"meta":446,"navigation":187,"order":447,"path":448,"published":190,"readingMinutes":175,"seo":449,"stem":450,"takeaways":451,"updated":190,"__hash__":452},"guides\u002Fguide\u002Fspam-filter-rules.md","Keyword, repeated-message and anti-flood rules",{"type":9,"value":338,"toc":435},[339,343,346,350,353,357,363,366,369,373,376,380,414,416,427,429],[12,340,342],{"id":341},"match-the-language-that-matters","Match the language that matters.",[17,344,345],{},"Enter one keyword per line, up to 30 terms with at most 80 characters each. A contained keyword can save matching evidence from a single message. Optional fuzzy matching detects text variations with a configurable similarity threshold from 0.70 to 0.98; the default is 0.85.",[12,347,349],{"id":348},"fuzzy-matching-limits","Fuzzy matching limits",[17,351,352],{},"Terms shorter than four characters use containment matching only. Fuzzy checks are limited to the first 500 characters of each message and a per-group computational budget. Similarity is not a spam probability, and limited budgets may miss matches.",[12,354,356],{"id":355},"a-containment-match-example","A containment match example",[17,358,359,360],{},"Keyword: ",[49,361,362],{},"free giveaway",[17,364,365],{},"Message: “Join our free giveaway today.”",[17,367,368],{},"Evidence saved in Observe mode",[12,370,372],{"id":371},"repetition-near-duplicates-and-anti-flood","Repetition, near duplicates and anti-flood",[17,374,375],{},"Repeated messages, near duplicates, and short bursts of posting have separate detection settings. Enabled detection kinds can use the group’s chosen Observe, Block or Remove action; leave Observe selected if you only want evidence.",[12,377,379],{"id":378},"recommended-presets-by-community-type","Recommended presets by community type",[144,381,382,402,408],{},[28,383,384,387,388,391,392,391,395,391,398,401],{},[31,385,386],{},"Web3 & Crypto groups",": Target phishing phrases (",[49,389,390],{},"airdrop",", ",[49,393,394],{},"claim reward",[49,396,397],{},"seed phrase",[49,399,400],{},"presale","), enable near-duplicate checks, and set strict flood limits (e.g. 3 messages within 5s). Start in Observe mode, then switch to Block for confirmed malicious links.",[28,403,404,407],{},[31,405,406],{},"Developer communities",": Use targeted marketing phrases; keep repetition thresholds relaxed (5+ occurrences) to avoid flagging shared code snippets or error logs; maintain whitelists for maintainers.",[28,409,410,413],{},[31,411,412],{},"Local & Hobby groups",": Add recurring ad expressions; enable 60-second repeated-message detection; use Observe mode to test rules before switching to Remove for persistent ad accounts.",[12,415,142],{"id":141},[144,417,418,421,424],{},[28,419,420],{},"Start with narrow terms and Observe mode.",[28,422,423],{},"Similarity scores are not spam probabilities.",[28,425,426],{},"Review repeated-message and anti-flood settings separately.",[12,428,158],{"id":157},[17,430,161,431,166,433,52],{},[36,432,165],{"href":164},[36,434,170],{"href":169},{"title":106,"searchDepth":172,"depth":172,"links":436},[437,438,439,440,441,442,443],{"id":341,"depth":175,"text":342},{"id":348,"depth":175,"text":349},{"id":355,"depth":175,"text":356},{"id":371,"depth":175,"text":372},{"id":378,"depth":175,"text":379},{"id":141,"depth":175,"text":142},{"id":157,"depth":175,"text":158},"rules-and-actions","Tune your Telegram spam filter with matching limits, thresholds and evidence.",{},4,"\u002Fguide\u002Fspam-filter-rules",{"title":336,"description":445},"guide\u002Fspam-filter-rules",[420,423,426],"JjnJ2dhOB6vyg2IjkAt-L3WUYUDXJpQ4GkTnjy-wmWg",{"id":454,"title":455,"author":7,"body":456,"category":444,"description":548,"extension":184,"language":185,"meta":549,"navigation":187,"order":550,"path":551,"published":190,"readingMinutes":175,"seo":552,"stem":553,"takeaways":554,"updated":190,"__hash__":555},"guides\u002Fguide\u002Fmember-actions.md","Observe, Block and Remove: what each action does",{"type":9,"value":457,"toc":537},[458,462,466,469,473,476,480,483,487,496,499,503,506,509,516,518,529,531],[12,459,461],{"id":460},"observe-first-choose-deliberately","Observe first. Choose deliberately.",[95,463,465],{"id":464},"observe","Observe",[17,467,468],{},"Save matching evidence without changing group membership. The default action.",[95,470,472],{"id":471},"block","Block",[17,474,475],{},"Ban a rule-matched member so they cannot rejoin while the ban remains.",[95,477,479],{"id":478},"remove","Remove",[17,481,482],{},"Ban, then unban to allow rejoining. The member is not automatically added back.",[12,484,486],{"id":485},"message-deletion-and-required-permissions","Message deletion and required permissions",[488,489,490],"blockquote",{},[17,491,492,495],{},[31,493,494],{},"History is affected."," Telegram’s ban operation deletes the member’s message history in supergroups. Both Block and Remove use it. Remove cannot promise to preserve history.",[17,497,498],{},"Automatic actions require enabled group rules and an explicitly selected Block or Remove action. The bot needs permission to delete messages and restrict members. TGDog first attempts to delete currently matched cached messages, in batches of up to 100, before member handling. Explicit deletion is generally limited to messages younger than 48 hours. Saving rules can examine already cached messages and queue actions, not only future messages.",[12,500,502],{"id":501},"inspect-results-and-recover-incomplete-actions","Inspect results and recover incomplete actions",[17,504,505],{},"Inspect Execution records for pending, retry, successful, failed, skipped, or unknown outcomes. An unknown network response is not proof of success. An incomplete Remove may need unban recovery; resolve it before disconnecting or clearing local data.",[17,507,508],{},"The current implementation has mock-tested action handling. Real-group action verification is not established in the source project documentation. Validate the behavior in a designated test group before relying on it in production.",[17,510,511],{},[36,512,515],{"href":513,"rel":514},"https:\u002F\u002Fcore.telegram.org\u002Fbots\u002Fapi#banchatmember",[40],"Source: Telegram member ban semantics",[12,517,142],{"id":141},[144,519,520,523,526],{},[28,521,522],{},"Observe saves evidence without member handling.",[28,524,525],{},"Block and Remove affect message history.",[28,527,528],{},"An unknown response must be checked, not treated as success.",[12,530,158],{"id":157},[17,532,161,533,166,535,52],{},[36,534,165],{"href":164},[36,536,170],{"href":169},{"title":106,"searchDepth":172,"depth":172,"links":538},[539,544,545,546,547],{"id":460,"depth":175,"text":461,"children":540},[541,542,543],{"id":464,"depth":172,"text":465},{"id":471,"depth":172,"text":472},{"id":478,"depth":172,"text":479},{"id":485,"depth":175,"text":486},{"id":501,"depth":175,"text":502},{"id":141,"depth":175,"text":142},{"id":157,"depth":175,"text":158},"Understand member bans, message deletion, permissions and recovery before enabling actions.",{},5,"\u002Fguide\u002Fmember-actions",{"title":455,"description":548},"guide\u002Fmember-actions",[522,525,528],"K1jNk7SYolgkvBeK2ONdODsDifd5gTdP6BxI1fcB6Xw",{"id":557,"title":558,"author":7,"body":559,"category":660,"description":661,"extension":184,"language":185,"meta":662,"navigation":187,"order":663,"path":664,"published":190,"readingMinutes":175,"seo":665,"stem":666,"takeaways":667,"updated":190,"__hash__":668},"guides\u002Fguide\u002Fmessage-evidence.md","Message evidence, local storage and retention",{"type":9,"value":560,"toc":654},[561,565,568,571,577,581,633,635,646,648],[12,562,564],{"id":563},"know-what-matched-and-why","Know what matched, and why.",[17,566,567],{},"Evidence includes original text, message IDs and times, matching terms or fragments, and the rule snapshot used at detection. Execution records separately show what happened when an action was attempted.",[17,569,570],{},"Busy groups can exhaust the message cap before the configured time window. Old evidence is not automatically withdrawn when a rule changes or an edited message stops matching. Clearing local cache does not delete Telegram messages.",[17,572,573],{},[36,574,576],{"href":575},"\u002Fprivacy\u002F","Read the data details",[12,578,580],{"id":579},"retention-at-a-glance","Retention at a glance",[582,583,584,597],"table",{},[585,586,587],"thead",{},[588,589,590,594],"tr",{},[591,592,593],"th",{},"Data",[591,595,596],{},"Limit",[598,599,600,609,617,625],"tbody",{},[588,601,602,606],{},[603,604,605],"td",{},"Raw messages",[603,607,608],{},"Up to 3,000 per group; at most 7 days",[588,610,611,614],{},[603,612,613],{},"Matching evidence",[603,615,616],{},"30 days",[588,618,619,622],{},[603,620,621],{},"Completed execution records",[603,623,624],{},"30 days by default",[588,626,627,630],{},[603,628,629],{},"Unresolved recovery jobs",[603,631,632],{},"Until resolved",[12,634,142],{"id":141},[144,636,637,640,643],{},[28,638,639],{},"Messages and evidence have different retention limits.",[28,641,642],{},"Busy groups can reach the message cap early.",[28,644,645],{},"Clearing local cache does not delete Telegram messages.",[12,647,158],{"id":157},[17,649,161,650,166,652,52],{},[36,651,165],{"href":164},[36,653,170],{"href":169},{"title":106,"searchDepth":172,"depth":172,"links":655},[656,657,658,659],{"id":563,"depth":175,"text":564},{"id":579,"depth":175,"text":580},{"id":141,"depth":175,"text":142},{"id":157,"depth":175,"text":158},"data-and-troubleshooting","Learn what TGDog keeps locally, how long it is retained and what clearing cache means.",{},6,"\u002Fguide\u002Fmessage-evidence",{"title":558,"description":661},"guide\u002Fmessage-evidence",[639,642,645],"L8hwSZWHvLOTjXmNHGnJaXwFUFZ8f4PiU3EVNcxeT8Q",{"id":670,"title":671,"author":7,"body":672,"category":660,"description":747,"extension":184,"language":185,"meta":748,"navigation":187,"order":749,"path":750,"published":190,"readingMinutes":175,"seo":751,"stem":752,"takeaways":753,"updated":190,"__hash__":754},"guides\u002Fguide\u002Ftroubleshooting.md","Troubleshoot missing updates and Telegram API errors",{"type":9,"value":673,"toc":737},[674,678,682,685,689,692,696,699,706,710,716,718,729,731],[12,675,677],{"id":676},"when-something-doesnt-look-right","When something doesn’t look right.",[95,679,681],{"id":680},"no-messages-received","No messages received",[17,683,684],{},"Confirm Chrome is running and online, the token is valid, and the bot is an admin in the supergroup. Check whether another client or webhook is receiving updates. Telegram decides which messages a bot can see; do not assume it receives every kind of message.",[95,686,688],{"id":687},"a-keyword-seems-to-be-missed","A keyword seems to be missed",[17,690,691],{},"Check that the group and keyword rule are enabled, the sender is not exempt, and the message is present in the local cache. Use the extension’s missed-match diagnostics to inspect local reception and rule reasons. It does not fetch full history or trigger punishment.",[95,693,695],{"id":694},"_409-429-or-an-unknown-action","409, 429, or an unknown action",[17,697,698],{},"A 409 indicates an update-receiver conflict. Remove the conflict and manually resume. A 429 follows Telegram’s retry delay. An unknown action requires checking the execution record and, when needed, member state; do not treat it as completed.",[17,700,701],{},[36,702,705],{"href":703,"rel":704},"https:\u002F\u002Fcore.telegram.org\u002Fbots\u002Ffaq#what-messages-will-my-bot-get",[40],"Source: Which messages can a bot receive?",[95,707,709],{"id":708},"still-need-a-hand","Still need a hand?",[17,711,712],{},[36,713,715],{"href":714},"\u002Fcontact\u002F","Contact us",[12,717,142],{"id":141},[144,719,720,723,726],{},[28,721,722],{},"Check reception and exemptions before changing rules.",[28,724,725],{},"409 means an update-receiver conflict; 429 requires waiting.",[28,727,728],{},"Resolve uncertain actions before clearing local data.",[12,730,158],{"id":157},[17,732,161,733,166,735,52],{},[36,734,165],{"href":164},[36,736,170],{"href":169},{"title":106,"searchDepth":172,"depth":172,"links":738},[739,745,746],{"id":676,"depth":175,"text":677,"children":740},[741,742,743,744],{"id":680,"depth":172,"text":681},{"id":687,"depth":172,"text":688},{"id":694,"depth":172,"text":695},{"id":708,"depth":172,"text":709},{"id":141,"depth":175,"text":142},{"id":157,"depth":175,"text":158},"Diagnose missing matches, receiver conflicts, rate limits and uncertain actions.",{},7,"\u002Fguide\u002Ftroubleshooting",{"title":671,"description":747},"guide\u002Ftroubleshooting",[722,725,728],"9c5Bai9DR2HbvNp4vEsw-65DauZSX8V2_AvxMDnQ2fY",1791598870642]