12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package tg
- import tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
- type Update struct {
- tgbotapi.Update
- }
- // The type represents general update channel.
- type UpdateChan struct {
- chn chan Update
- }
- // Return new update channel.
- func NewUpdateChan() *UpdateChan {
- ret := &UpdateChan{}
- ret.chn = make(chan Update)
- return ret
- }
- func (updates *UpdateChan) Chan() chan Update {
- return updates.chn
- }
- // Send an update to the channel.
- // Returns true if the update was sent.
- func (updates *UpdateChan) Send(u Update) bool {
- defer recover()
- if updates == nil || updates.chn == nil {
- return false
- }
- updates.chn <- u
- return true
- }
- // Read an update from the channel.
- func (updates *UpdateChan) Read() (Update, bool) {
- if updates == nil || updates.chn == nil {
- return Update{}, false
- }
- return <-updates.chn, true
- }
- // Returns true if the channel is closed.
- func (updates *UpdateChan) Closed() bool {
- return updates==nil || updates.chn == nil
- }
- // Close the channel. Used in defers.
- func (updates *UpdateChan) Close() {
- if updates == nil || updates.chn == nil {
- return
- }
- chn := updates.chn
- updates.chn = nil
- close(chn)
- }
- func (u Update) HasDocument() bool {
- return u.Message != nil &&
- u.Message.Document != nil
- }
- func (u Update) DocumentID() FileID {
- return FileID(u.Update.Message.Document.FileID)
- }
- func (u *Update) DocumentName() string {
- return u.Message.Document.FileName
- }
- func (u Update) DocumentSize() int {
- return u.Message.Document.FileSize
- }
- func (u Update) DocumentMimeType() string {
- return u.Message.Document.MimeType
- }
- func (u Update) HasPhotos() bool {
- return u.Message != nil && u.Message.Photo != nil &&
- len(u.Message.Photo) != 0
- }
- func (u Update) PhotoIDs() []FileID {
- ret := make([]FileID, len(u.Message.Photo))
- for i, photo := range u.Message.Photo {
- ret[i] = FileID(photo.FileID)
- }
- return ret
- }
|