Skip to content

Autogenerated Go wrapper for the telegram API. Inspired by the python-telegram-bot library.

License

Notifications You must be signed in to change notification settings

PaulSonOfLars/gotgbot

Repository files navigation

Golang Telegram Bot library

Heavily inspired by the python-telegram-bot library, this package is a code-generated wrapper for the telegram bot api. We also provide an extensions package which defines an updater/dispatcher pattern to provide update processing out of the box.

All the telegram types and methods are generated from a bot api spec. These are generated in the gen_*.go files.

If you have any questions, come find us in our telegram support chat!

Features:

  • All telegram API types and methods are generated from the bot api docs, which makes this library:
    • Guaranteed to match the docs
    • Easy to update
    • Self-documenting (Re-uses pre-existing telegram docs)
  • Type safe; no weird interface{} logic, all types match the bot API docs.
  • No third party library bloat; only uses standard library.
  • Updates are each processed in their own go routine, encouraging concurrent processing, and keeping your bot responsive.
  • Code panics are automatically recovered from and logged, avoiding unexpected downtime.

Getting started

Download the library with the standard go get command:

go get github.com/PaulSonOfLars/gotgbot/v2

Example bots

Sample bots can be found in the samples directory.

Some recommended bots to look at:

Docs

Docs can be found here.

Contributing

Contributions are welcome! More information on contributing can be found here.

Regenerating the generated code.

If you've made changes to the code generation, you will probably need to regenerate the library code. This can be done simply by running go generate from the repo root. Running this will generate the code from the specification repo at the commit pinned in the spec_commit file.

To upgrade the commit in spec_commit and regenerate your code, simply run GOTGBOT_UPGRADE=true go generate. This will fetch the latest commit sha, and regenerate the library against that, giving you the latest version available.