tg/cmd/test/main.go

91 lines
2.1 KiB
Go
Raw Normal View History

2023-07-03 17:22:45 +03:00
package main
2023-07-08 22:26:21 +03:00
import (
"log"
"os"
"strings"
2023-07-08 22:26:21 +03:00
"github.com/mojosa-software/got/src/tx"
2023-07-09 01:28:59 +03:00
)
var startScreenButton = tx.NewButton().
WithText("🏠 To the start screen").
ScreenChange("start")
2023-07-12 14:06:05 +03:00
var beh = tx.NewBehaviour().
// The function will be called every time
// the bot is started.
OnStartFunc(func(c *tx.Context) {
c.V["counter"] = new(int)
c.ChangeScreen("start")
}).WithKeyboards(
// Increment/decrement keyboard.
tx.NewKeyboard("inc/dec").Row(
tx.NewButton().WithText("+").ActionFunc(func(c *tx.Context) {
counter := c.V["counter"].(*int)
*counter++
c.Sendf("%d", *counter)
}),
tx.NewButton().WithText("-").ActionFunc(func(c *tx.Context) {
counter := c.V["counter"].(*int)
*counter--
c.Sendf("%d", *counter)
}),
).Row(
startScreenButton,
),
// The navigational keyboard.
tx.NewKeyboard("nav").Row(
tx.NewButton().WithText("Inc/Dec").ScreenChange("inc/dec"),
).Row(
tx.NewButton().WithText("Upper case").ScreenChange("upper-case"),
tx.NewButton().WithText("Lower case").ScreenChange("lower-case"),
),
// The keyboard to return to the start screen.
tx.NewKeyboard("nav-start").Row(
startScreenButton,
),
).WithScreens(
tx.NewScreen("start").
WithText("The bot started!").
Keyboard("nav"),
tx.NewScreen("inc/dec").
WithText(
"The screen shows how"+
"user separated data works"+
"by saving the counter for each of them",
).
Keyboard("inc/dec").
// The function will be called when reaching the screen.
ActionFunc(func(c *tx.Context) {
counter := c.V["counter"].(*int)
c.Sendf("Current counter value equals %d", *counter)
}),
tx.NewScreen("upper-case").
WithText("Type text and the bot will send you the upper case version to you").
Keyboard("nav-start").
ActionFunc(func(c *tx.Context) {
for {
s, err := c.ReadTextMessage()
if err == tx.NotAvailableErr {
break
}
c.Sendf("%s", strings.ToUpper(s))
}
}),
)
2023-07-09 01:28:59 +03:00
2023-07-03 17:22:45 +03:00
func main() {
2023-07-08 22:26:21 +03:00
token := os.Getenv("BOT_TOKEN")
bot, err := tx.NewBot(token, beh, nil)
if err != nil {
log.Panic(err)
}
2023-07-08 22:26:21 +03:00
bot.Debug = true
2023-07-08 22:26:21 +03:00
log.Printf("Authorized on account %s", bot.Self.UserName)
bot.Run()
}