mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI-examples.git
synced 2026-08-29 04:16:27 +00:00
76 lines
3.0 KiB
Markdown
76 lines
3.0 KiB
Markdown
# ResenderBot
|
|
|
|
A multiplatform long-polling example that recreates received content in the same
|
|
chat. Shared behavior lives in `ResenderBotLib`; JVM, browser/JS, and native entry
|
|
points start it in platform-specific ways.
|
|
|
|
## Resend behavior
|
|
|
|
The bot defines no commands. For each content message, it shows a typing action and
|
|
uses `createResend` to send equivalent content back to the originating chat. When
|
|
present, it carries over the replied-to message metadata, text quote entities and
|
|
position, and the message effect ID.
|
|
|
|
Business content sent by the business-connection owner is ignored; other delivered
|
|
content messages are eligible. Processing is separated by chat. The bot prints each
|
|
received update and each resend result, and reports its `getMe` result through the
|
|
launcher's output callback.
|
|
|
|
## Source sets and launchers
|
|
|
|
- `ResenderBotLib/commonMain` provides the public `activateResenderBot` function and
|
|
all Telegram handlers for JVM, JS, and native consumers.
|
|
- `ResenderBotLib/jsMain` provides a browser form. Each submission starts another
|
|
bot and displays callback output in its own page element; console output remains
|
|
in the browser developer tools.
|
|
- `jvm_launcher` provides a suspending CLI entry point and optional debug logging.
|
|
- `native_launcher` wraps the shared suspending function in `runBlocking`. Its
|
|
shared native template selects Linux x64/Arm64 or Windows x64 for the host.
|
|
|
|
## Setup and permissions
|
|
|
|
Create a bot, obtain its token, and keep it private. Start a private chat with the
|
|
bot or add it to a chat where Telegram will deliver the desired content. The bot
|
|
must be allowed to send each content type it should reproduce; no administrator-only
|
|
methods are used. Long polling is used, so run only one launcher per token.
|
|
|
|
The browser form handles the token in client-side code and uses a plain text input.
|
|
Use it only on a trusted local page, submit once, and close the page when finished.
|
|
Linux native builds also require the repository's documented libcurl dependency.
|
|
|
|
## Run from the repository root
|
|
|
|
### JVM
|
|
|
|
The first argument is the required token. `debug` is recognized only as the second
|
|
argument; later arguments are ignored.
|
|
|
|
```bash
|
|
./gradlew :ResenderBot:jvm_launcher:run --args="BOT_TOKEN"
|
|
./gradlew :ResenderBot:jvm_launcher:run --args="BOT_TOKEN debug"
|
|
```
|
|
|
|
### Browser/JS
|
|
|
|
```bash
|
|
./gradlew :ResenderBot:ResenderBotLib:jsBrowserDevelopmentRun
|
|
```
|
|
|
|
Enter the token in the page form and select **Start bot**. There are no browser
|
|
command-line arguments.
|
|
|
|
### Kotlin/Native
|
|
|
|
Build the host-specific debug executable, then pass the required token directly to
|
|
it. Additional native arguments are ignored.
|
|
|
|
```bash
|
|
./gradlew :ResenderBot:native_launcher:linkDebugExecutableNative
|
|
./ResenderBot/native_launcher/build/bin/native/debugExecutable/native_launcher.kexe "BOT_TOKEN"
|
|
```
|
|
|
|
On Windows, run
|
|
`ResenderBot\\native_launcher\\build\\bin\\native\\debugExecutable\\native_launcher.exe "BOT_TOKEN"`
|
|
after the same Gradle link task. macOS hosts are not configured by the native
|
|
launcher template.
|