Receitas de bot
Lembrete, enquete de um toque, menu de confirmação e resposta a documento — cada uma testada.
Confirmar antes de agir#
dataforge
adopt Arcane.Telegram as Tg
app := Tg.app("123456:TESTE-exemplo")
mark @app.comando("cancelar_pedido")
action pedir_confirmacao(ctx):
ctx.responder("Cancelar o pedido 77?", teclado := Tg.botoes([[
Tg.botao("Sim, cancelar", dados := "cancelar:77:sim"),
Tg.botao("Não", dados := "cancelar:77:nao")]]))
mark @app.botao("^cancelar:")
action decidir(ctx):
partes := ctx.dados.split(":")
ctx.editar("Pedido cancelado." given partes[2] is "sim" otherwise "Nada foi feito.")
t := Tg.testar(app)
t.comando("cancelar_pedido")
t.clicar("cancelar:77:nao")
assert t.chamadas("editMessageText")[-1]["texto"] is "Nada foi feito."Enquete de um toque#
dataforge
adopt Arcane.Telegram as Tg
app := Tg.app("123456:TESTE-exemplo")
votos := {"sim": 0, "nao": 0}
mark @app.comando("enquete")
action enquete(ctx):
ctx.responder("Almoço às 12h?", teclado := Tg.botoes([[
Tg.botao("👍", dados := "voto:sim"), Tg.botao("👎", dados := "voto:nao")]]))
mark @app.botao("^voto:")
action votar(ctx):
escolha := ctx.dados.split(":")[1]
votos[escolha] += 1
ctx.editar($"Almoço às 12h? 👍 {votos["sim"]} 👎 {votos["nao"]}")
t := Tg.testar(app)
t.comando("enquete")
t.clicar("voto:sim")
t.clicar("voto:sim")
assert votos["sim"] is 2