summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-08-16 18:59:08 -0500
committerJeff Carr <[email protected]>2025-08-16 18:59:08 -0500
commit3e8e5fba8fe3aacd07b45ccf9860dcd3fd8e9d94 (patch)
tree49339c100ed6553e8790f8e6239c69f3d853ba35
parentf5a8c9b67285fd9b788d84aade361f1190128066 (diff)
-rw-r--r--telegram/.env1
-rw-r--r--telegram/Makefile5
-rw-r--r--telegram/send_after.go37
3 files changed, 43 insertions, 0 deletions
diff --git a/telegram/.env b/telegram/.env
new file mode 100644
index 0000000..4b0550a
--- /dev/null
+++ b/telegram/.env
@@ -0,0 +1 @@
+TOKEN=5292519055:AAGJPrxYs70PoIWEvLcS3oV3XZ2ldko-M4k
diff --git a/telegram/Makefile b/telegram/Makefile
new file mode 100644
index 0000000..57d7cce
--- /dev/null
+++ b/telegram/Makefile
@@ -0,0 +1,5 @@
+run:
+ go run -v -x send_after.go
+
+test:
+ curl https://api.telegram.org/bot5292519055:AAGJPrxYs70PoIWEvLcS3oV3XZ2ldko-M4k/getMe
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()
+}