update readmes

This commit is contained in:
2026-08-21 15:51:06 +06:00
parent 016400a821
commit ce48393895
104 changed files with 2615 additions and 333 deletions

View File

@@ -1,13 +1,40 @@
# EphemeralMessagesBot
Demonstrates Ephemeral Messages support introduced in Telegram Bot API 10.2.
Demonstrates ephemeral messages: group messages that Telegram shows only to one receiver.
Add the bot to a group and send `/ephemeral`. Tapping the button makes the bot send a message that only
you can see (an ephemeral message), then edit and delete it. The bot also detects incoming ephemeral
messages and replies to them ephemerally.
## Behavior
## Launch
- `/ephemeral` replies with a **Reveal a secret** inline button. The command is registered with Telegram as
an ephemeral command.
- Pressing the button (`reveal` callback data) sends a personal message visible only to the user who
pressed it. After three seconds the bot edits the message, then deletes it three seconds later.
- When the bot receives an ephemeral content message, it sends two ephemeral replies: one through the
general `reply` API and one through the explicit `replyToEphemeral` API.
- Updates and basic bot information are printed to standard output.
## Setup
Create a bot token, keep it secret, and add the bot to a group. The bot must be allowed to send messages
there; this example does not request or validate group permissions itself. Use a Telegram environment that
supports ephemeral messages.
## Run
From the repository root, pass the token as the first application argument:
```bash
../gradlew :EphemeralMessagesBot:run --args="BOT_TOKEN"
./gradlew :EphemeralMessagesBot:run --args="BOT_TOKEN"
```
Optional, case-sensitive arguments may follow the token:
- `debug` enables formatted library logging on standard output.
- `testServer` connects the bot to Telegram's test server.
For example:
```bash
./gradlew :EphemeralMessagesBot:run --args="BOT_TOKEN debug testServer"
```
The token is required; starting without it fails before polling begins. Stop the bot with `Ctrl+C`.

View File

@@ -25,27 +25,16 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
/**
* This bot demonstrates Ephemeral Messages support introduced in Telegram Bot API 10.2.
* Runs the ephemeral-messages example bot using long polling.
*
* An ephemeral message lives inside a group chat but is shown to exactly one user (its `receiver`).
* It is addressed not by a normal message id, but by a per-receiver [dev.inmo.tgbotapi.types.EphemeralMessageId]
* together with that receiver's [dev.inmo.tgbotapi.types.UserId]. Bots typically send ephemeral messages in
* response to a callback query (so a `callbackQueryId` is available) or reply ephemerally to an ephemeral
* message the bot itself received.
* `/ephemeral` posts an inline button whose callback sends, edits, and deletes a message visible only to
* the user who pressed it. Incoming [PossiblyEphemeralMessage] instances receive both an automatic
* ephemeral [reply] and an explicit [replyToEphemeral].
*
* Key concepts demonstrated:
* - [sendTextMessage] with `receiverUserId` + `callbackQueryId` — sends the outgoing message as ephemeral,
* visible only to `receiverUserId` in the group chat (one of the 13 ephemeral-capable send requests)
* - [PossiblyEphemeralMessage] — the marker interface (`receiverUser` / `ephemeralMessageId`) implemented by
* the group-family `Common*ContentMessage` types; the way to detect that a message is ephemeral
* - [editEphemeralMessageText] / [deleteEphemeralMessage] — edit / delete an ephemeral message addressed by
* `chatId` + `receiverUserId` + [dev.inmo.tgbotapi.types.EphemeralMessageId] ([deleteEphemeralMessage] also
* accepts a [PossiblyEphemeralMessage] directly)
* - [reply] smart-branch — replying to an ephemeral message automatically sends the reply ephemeral to the
* same receiver (see [dev.inmo.tgbotapi.types.ephemeralReplyParametersOrNull])
* - [replyToEphemeral] — the explicit form: reply to an ephemeral message by `chatId` + `receiverUserId` +
* `ephemeralMessageId` without needing the original [PossiblyEphemeralMessage] object
* - [BotCommand.isEphemeral] — the new command flag marking a command whose response is ephemeral
* [args] must start with the bot token. The optional exact values `debug` and `testServer` respectively
* enable console logging and select Telegram's test server.
*
* @throws NoSuchElementException when [args] does not contain a bot token
*/
suspend fun main(vararg args: String) {
val botToken = args.first()