The Hermes Cookbook Telegram bots in Go, done properly Hermes on GitHub

A field guide, not a reference

The Hermes Cookbook

This is the book I wanted when I started shipping bots on Hermes: short chapters, real code, and the mistakes called out before you make them. It assumes you know Go and have talked to BotFather at least once. Everything else, we build up.

Hermes is a Telegram bot framework for Go with a simple promise: the core module depends on nothing outside the standard library, routing is allocation-free, and every one of the 185 Bot API methods is typed. You write ordinary Go; Hermes stays out of the way.

package main

import (
    "context"
    "log"
    "os"

    "github.com/sidwiskers/hermes"
)

func main() {
    bot := hermes.New(os.Getenv("BOT_TOKEN"))

    bot.Use(hermes.Recover())

    bot.Command("start", func(c *hermes.Context) error {
        return c.Send("Hello.")
    })

    log.Fatal(bot.Run(context.Background()))
}

That is a complete, production-shaped bot. The rest of the book is about everything between this and a fleet of hardened, well-tested bots: webhooks, keyboards, typed callbacks, sessions, state machines, media, ephemeral messages, rate limiting, deduplication, testing, and running many bots in one process.

How to read this book

Chapters 1–3 are the spine — read them in order. After that, jump around. Code samples track the current Hermes release, and every claim about behaviour comes from the framework's own test suite and release evidence, not from wishful thinking.

The chapters

Set in Palatino and system sans. No trackers, no fonts fetched, no build step. The whole book is a folder of files — as it should be.