Library Structure
This library is generally broken into three components you need to understand.
Configs
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
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
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.