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() +}