telegram-bot-handling

telegram-bot-handling is a cursor rule for Cursor from vendelieu/telegram-bot. It costs 831 tokens per session, scanned A, original, Apache-2.0.

A set of rules for handling updates in a Kotlin Telegram bot library. It covers ordinary handlers and multi-step wizards, where a bot guides someone through several inputs.

In plain words
What is it for?
Implementing Telegram bot handlers, multi-step conversations, input validation, state storage, and transitions such as retrying or finishing.
Why use it?
It keeps different handler styles and wizard state working in a consistent way. This helps prevent mistakes when processing messages and moving users between steps.

Cursor rule for Cursor

Written for Cursor: installed under .cursor/.

Good fit Implementing Telegram bot handlers, multi-step conversations, input validation, state storage, and transitions such as retrying or finishing.

Compare 6 cursor rules from other repositories ↓
Install with agentmods
npx agentmods add rules/vendelieu/telegram-bot/telegram-bot-handling
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/vendelieu/telegram-bot

Made for: Cursor.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for telegram-bot-handling

README.md
[![agentmods](https://agentmods.dev/badge/rules/vendelieu/telegram-bot/telegram-bot-handling/github.svg)](https://agentmods.dev/rules/vendelieu/telegram-bot/telegram-bot-handling)
Your own site
<a href="https://agentmods.dev/rules/vendelieu/telegram-bot/telegram-bot-handling"><img src="https://agentmods.dev/badge/rules/vendelieu/telegram-bot/telegram-bot-handling/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for telegram-bot-handling

Your own site · 80×15
<a href="https://agentmods.dev/rules/vendelieu/telegram-bot/telegram-bot-handling"><img src="https://agentmods.dev/badge/rules/vendelieu/telegram-bot/telegram-bot-handling.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 831 This file is loaded in full into every session.
When invoked 831 The same file — it is already loaded in full.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00831 $0.00831
Opus 5.5 $0.00332 $0.00332
Sonnet 5.5 $0.00166 $0.00166
Haiku 4.5 $0.00083 $0.00083

Measured 1mo ago against content hash 28fc4ca1d08b, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

telegram-bot-handling scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/rules/telegram-bot-handling.mdc · 68 lines

How it starts

The opening of the file, as written. The whole thing — 68 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Telegram Bot Handling Architecture

Activity

Activity.kt is the interface for all handler functions.

  • id: Unique identifier (hash of signature)
  • qualifier: Qualified class name (or "functional" for DSL)
  • function: Handler name
  • invoke(context): Runs the handler with ProcessingContext

LambdaActivity: Runtime implementation used by FunctionalHandlingDsl. Wraps a suspend lambda.

KSP-generated Activity: Classes generated by ktnip from annotated functions; same interface.

WizardActivity

WizardActivity.kt extends Activity for multi-step wizard flows.

  • Abstract: Concrete implementations generated by KSP from @WizardHandler classes
  • steps: List of WizardStep; order defines flow
  • start(ctx): Enters initial step, sets inputListener
  • handleInput(ctx): Validates input, applies Transition (Next, JumpTo, Retry, Finish), persists state via WizardStateManager
  • getStateManagerForStep(step, bot): Resolves state manager for step's store() return type

WizardStep: onEntry, validate -> Transition, store (optional), onRetry

WizardContext: user, update, bot; getState/setState/delState for step state (type-safe accessors generated by KSP).

Functional DSL vs Annotation Approach

Both approaches produce Activity instances and register them in ActivityRegistry. Same pipeline processes them.

Functional DSL

  • Entry: bot.setFunctionality { } or bot.handleUpdates() with functional block
  • FunctionalHandlingDsl: onCommand, onInput, inputChain, common, onUpdate, whenNotHandled
  • Creates: LambdaActivity at runtime; registers via registry.registerActivity, registerCommand, registerInput, etc.
  • FunctionalDSLUtils: onMessage, onCallbackQuery, etc. — typed wrappers over onUpdate(UpdateType.X) for better ActivityCtx<MessageUpdate> inference

Read the full file on GitHub · 68 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago First seen · 68 lines · 831 tokens per session scan A 28fc4ca1d08b

Subscribe to this mod's changes

telegram-bot-handling is a cursor rule published in the GitHub repository vendelieu/telegram-bot (249 stars, last pushed 2d ago), licensed Apache-2.0. It adds 831 tokens to every session, about $0.0033 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.