Pular para o conteúdo

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