Library Structure

This library is generally broken into three components you need to understand.


Configs are collections of fields related to a single request. For example, if one wanted to use the sendMessage endpoint, you could use the MessageConfig struct to configure the request. There is a one-to-one relationship between Telegram endpoints and configs. They generally have the naming pattern of removing the send prefix and they all end with the Config suffix. They generally implement the Chattable interface. If they can send files, they implement the Fileable interface.


Helpers are easier ways of constructing common Configs. Instead of having to create a MessageConfig struct and remember to set the ChatID and Text, you can use the NewMessage helper method. It takes the two required parameters for the request to succeed. You can then set fields on the resulting MessageConfig after it's creation. They are generally named the same as method names except with send replaced with New.


Methods are used to send Configs after they are constructed. Generally, Request is the lowest level method you'll have to call. It accepts a Chattable parameter and knows how to upload files if needed. It returns an APIResponse, the most general return type from the Bot API. This method is called for any endpoint that doesn't have a more specific return type. For example, setWebhook only returns true or an error. Other methods may have more specific return types. The getFile endpoint returns a File. Almost every other method returns a Message, which you can use Send to obtain.

There's lower level methods such as MakeRequest which require an endpoint and parameters instead of accepting configs. These are primarily used internally. If you find yourself having to use them, please open an issue.