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