mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI-examples.git
synced 2026-08-29 04:16:27 +00:00
update readmes
This commit is contained in:
@@ -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`.
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user