diff options
Diffstat (limited to 'telegram/send_after.go')
| -rw-r--r-- | telegram/send_after.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/telegram/send_after.go b/telegram/send_after.go new file mode 100644 index 0000000..8ae72c2 --- /dev/null +++ b/telegram/send_after.go @@ -0,0 +1,37 @@ +package main + +import ( + "time" + "fmt" + + . "github.com/enetx/g" + "github.com/enetx/tg/bot" + "github.com/enetx/tg/ctx" +) + +func main() { + fmt.Println("started...") + // Read the bot token from the .env file + token := NewFile(".env").Read().Ok().Trim().Split("=").Collect().Last().Some() + b := bot.New(token).Build().Unwrap() + + // Register a command handler for /start + b.Command("start", func(ctx *ctx.Context) error { + // Send an immediate message so Telegram considers the update as "handled" + ctx.SendMessage("Preparing self-destruct...").Send() + + // Schedule a second message to be sent after 3 seconds, + // and automatically delete it 5 seconds after it is sent + ctx.SendMessage("This message will self-destruct in 5 seconds."). + After(3 * time.Second). // Delay sending by 3 seconds + DeleteAfter(5 * time.Second). // Delete 5 seconds after it is sent + Send() + + // Delete the original /start message (from the user) + // This should be done after responding to avoid Telegram resending the update + return ctx.DeleteMessage().Send().Err() + }) + + // Start polling for updates and drop any pending ones from before startup + b.Polling().DropPendingUpdates().Start() +} |
