Changelog
- Bot API 6.6, 6.7, 6.8, 6.9, 7.0, 7.1
- Implemented Boosts API support
- Improved Stickers API support
- Improved Album interaction
- More of handy
Contexthelpers - New
telebot/reactpackage with reaction bindings - Embedded FS support for
telebot/layout - Lots of minor fixes and improvements
Bot API 6.6: Stickers
Unfortunately, due to breaking the Stickers API update on the Telegram side, we had to break the backward compatibility with previous versions of Telebot as well. However, this allowed us to rework the API and make it feel better and clearer to use.
// 1. UploadSticker now accepts the StickerSetFormat and File
b.UploadSticker(to, tele.StickerStatic, tele.FromDisk("telebot.png"))
// 2. CreateStickerSet now works with multiple stickers
b.CreateStickerSet(to, &tele.StickerInput{
// ...
Input: []tele.InputSticker{
{File: tele.FromDisk("telebot1.png")},
{File: tele.FromDisk("telebot2.png")},
},
})
// 3. AddSticker is now called AddStickerToSet and accepts name and the InputSticker
b.AddStickerToSet(to, tele.InputSticker{
File: tele.FromDisk("telebot.png"),
})Bot API 7.0, 7.1
Boosts
// 1. Get a list of user boosts for a particular chat
boosts, err := b.UserBoosts(chat, user)
if err != nil {
return err
}
// 2. Use boost fields
for _, boost := range boosts {
boost.ID
boost.AddDate()
boost.ExpirationDate()
...
}
// 3. Handle boost-related events
b.Handle(tele.OnBoost, func(c tele.Context) error {
boost := c.Boost()
boost.Chat
boost.Boost
...
})Reactions
import (
tele "gopkg.in/telebot.v3"
"gopkg.in/telebot.v3/react"
)
// 1. Use a telebot/react package for the React shorthand
b.React(to, msg, react.React(react.ThumbUp, react.Fire))
// 2. Use ReactionOptions to add special options
b.React(to, msg, tele.ReactionOptions{
Reactions: []tele.Reaction{react.Heart},
Big: true,
})Multiple Message Actions
b.ForwardMany(to, msgs)
b.CopyMany(to, msgs)
b.DeleteMany(to, msgs)Other Features
Check out the whole diff: #658
More shorthands
- Use a new
Triggerbot function to trigger the specific handler:
b.Handle("/start", func (c tele.Context) error {
return c.Send("Hello, World!")
})
b.Handle("/help", func (c tele.Context) error {
return b.Trigger("/start", c)
})- Finally, a
SetCaptionfunction to add a caption to the first media of the album:
var album tele.Album
// Populate album dynamically...
album.SetCaption("Hey, hey, hey!")
msgs, err := b.SendAlbum(user, album)
if err != nil {
return err
}- Handy
Contexthelpers to removeCallbackResponsefrom your code:
b.Handle(callback, func(c tele.Context) error {
return c.RespondText("This is a pop-up!")
// or ...
return c.RespondAlert("This is an alert!")
})- Initialize a
telebot/layoutfrom the embedded FS:
import (
"embed"
tele "gopkg.in/telebot.v3"
"gopkg.in/telebot.v3/layout"
)
//go:embed layout
var fs embed.FS
func main() {
lt, err := layout.NewFromFS(fs, "bot.yml")
if err != nil {
panic(err)
}
b, err := tele.NewBot(lt.Settings())
if err != nil {
panic(err)
}
// Done!
}Fixes and Improvements
- New
ErrIsfunction to check if the given description matches the error (71ac299) - Fixed
stopchannel race (#641) - Improved
Context.Argsparsing (#651) - Added missed types and fields (#647, #648)
- Added more errors (#659)
- Some
*Chatarguments changed toRecipient(#568) middleware.RecoverFuncnow accepts theContext(a26ba9f)- !! Renamings (0d0d5e7, 32b47a4, 435ad60)