Documentation ¶
Overview ¶
Package query contains generic pagination helpers.
Index ¶
- func GetBlocked(raw *tg.Client) *blocked.GetBlockedQueryBuilder
- func GetDialogs(raw *tg.Client) *dialogs.GetDialogsQueryBuilder
- func GetOldFeaturedStickers(raw *tg.Client) *featured.GetOldFeaturedStickersQueryBuilder
- func GetParticipants(raw *tg.Client, channel tg.InputChannelClass) *participants.GetParticipantsQueryBuilder
- func GetUserPhotos(raw *tg.Client, user tg.InputUserClass) *photos.GetUserPhotosQueryBuilder
- func Messages(raw *tg.Client) *messages.QueryBuilder
- type Query
- func (q *Query) Blocked() *blocked.QueryBuilder
- func (q *Query) Dialogs() *dialogs.QueryBuilder
- func (q *Query) Featured() *featured.QueryBuilder
- func (q *Query) GetBlocked() *blocked.GetBlockedQueryBuilder
- func (q *Query) GetDialogs() *dialogs.GetDialogsQueryBuilder
- func (q *Query) GetOldFeaturedStickers() *featured.GetOldFeaturedStickersQueryBuilder
- func (q *Query) GetParticipants(channel tg.InputChannelClass) *participants.GetParticipantsQueryBuilder
- func (q *Query) GetUserPhotos(user tg.InputUserClass) *photos.GetUserPhotosQueryBuilder
- func (q *Query) Messages() *messages.QueryBuilder
- func (q *Query) Participants() *participants.QueryBuilder
- func (q *Query) Photos() *photos.QueryBuilder
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetBlocked ¶
func GetBlocked(raw *tg.Client) *blocked.GetBlockedQueryBuilder
GetBlocked creates blocked.GetBlockedQueryBuilder. Shorthand for
query.NewQuery(raw).GetBlocked()
func GetDialogs ¶
func GetDialogs(raw *tg.Client) *dialogs.GetDialogsQueryBuilder
GetDialogs creates dialogs.GetDialogsQueryBuilder. Shorthand for
query.NewQuery(raw).GetDialogs()
func GetOldFeaturedStickers ¶
func GetOldFeaturedStickers(raw *tg.Client) *featured.GetOldFeaturedStickersQueryBuilder
GetOldFeaturedStickers creates featured.QueryBuilder. Shorthand for
query.NewQuery(raw).GetOldFeaturedStickers()
func GetParticipants ¶
func GetParticipants(raw *tg.Client, channel tg.InputChannelClass) *participants.GetParticipantsQueryBuilder
GetParticipants creates participants.GetParticipantsQueryBuilder. Shorthand for
query.NewQuery(raw).GetParticipants(channel)
func GetUserPhotos ¶
func GetUserPhotos(raw *tg.Client, user tg.InputUserClass) *photos.GetUserPhotosQueryBuilder
GetUserPhotos creates photos.GetUserPhotosQueryBuilder. Shorthand for
query.NewQuery(raw).GetUserPhotos(user)
Types ¶
type Query ¶
type Query struct {
// contains filtered or unexported fields
}
Query is common struct to create query builders.
Example (DownloadSaved) ¶
package main import ( "context" "os" "os/signal" "bitbucket.org/hokego/hokego-td/telegram" "bitbucket.org/hokego/hokego-td/telegram/downloader" "bitbucket.org/hokego/hokego-td/telegram/query" "bitbucket.org/hokego/hokego-td/telegram/query/messages" "bitbucket.org/hokego/hokego-td/tg" ) func main() { ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt) defer cancel() client, err := telegram.ClientFromEnvironment(telegram.Options{}) if err != nil { panic(err) } // This example downloads all attachments (photo, video, docs, etc.) // from SavedMessages dialog. if err := client.Run(ctx, func(ctx context.Context) error { raw := tg.NewClient(client) d := downloader.NewDownloader() return query.Messages(raw).GetHistory(&tg.InputPeerSelf{}).ForEach(ctx, func(ctx context.Context, elem messages.Elem) error { f, ok := elem.File() if !ok { return nil } _, err := d.Download(raw, f.Location).ToPath(ctx, f.Name) return err }) }); err != nil { panic(err) } }
Output:
Example (GetAdmins) ¶
package main import ( "context" "fmt" "os" "os/signal" "bitbucket.org/hokego/hokego-td/telegram" "bitbucket.org/hokego/hokego-td/telegram/query" "bitbucket.org/hokego/hokego-td/telegram/query/channels/participants" "bitbucket.org/hokego/hokego-td/telegram/query/dialogs" "bitbucket.org/hokego/hokego-td/tg" ) func main() { ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt) defer cancel() client, err := telegram.ClientFromEnvironment(telegram.Options{}) if err != nil { panic(err) } // This example iterates over all channels and prints admins. if err := client.Run(ctx, func(ctx context.Context) error { raw := tg.NewClient(client) cb := func(ctx context.Context, dlg dialogs.Elem) error { // Skip deleted dialogs. if dlg.Deleted() { return nil } q, ok := dlg.Participants(raw) if !ok { return nil } return q.ForEach(ctx, func(ctx context.Context, elem participants.Elem) error { user, admin, ok := elem.Admin() if !ok { return nil } fmt.Println(user.Username, "admin") if admin.AdminRights.ChangeInfo { fmt.Println("\t+ ChangeInfo") } if admin.AdminRights.PostMessages { fmt.Println("\t+ PostMessages") } if admin.AdminRights.EditMessages { fmt.Println("\t+ EditMessages") } if admin.AdminRights.DeleteMessages { fmt.Println("\t+ DeleteMessages") } if admin.AdminRights.BanUsers { fmt.Println("\t+ BanUsers") } if admin.AdminRights.InviteUsers { fmt.Println("\t+ InviteUsers") } if admin.AdminRights.PinMessages { fmt.Println("\t+ PinMessages") } if admin.AdminRights.AddAdmins { fmt.Println("\t+ AddAdmins") } if admin.AdminRights.Anonymous { fmt.Println("\t+ Anonymous") } if admin.AdminRights.ManageCall { fmt.Println("\t+ ManageCall") } if admin.AdminRights.Other { fmt.Println("\t+ Other") } return nil }) } return query.GetDialogs(raw).ForEach(ctx, cb) }); err != nil { panic(err) } }
Output:
Example (IterAllMessages) ¶
package main import ( "context" "fmt" "os" "os/signal" "bitbucket.org/hokego/hokego-td/telegram" "bitbucket.org/hokego/hokego-td/telegram/query" "bitbucket.org/hokego/hokego-td/telegram/query/dialogs" "bitbucket.org/hokego/hokego-td/telegram/query/messages" "bitbucket.org/hokego/hokego-td/tg" ) func main() { ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt) defer cancel() client, err := telegram.ClientFromEnvironment(telegram.Options{}) if err != nil { panic(err) } // This example iterates over all messages of all dialogs of user and prints them. if err := client.Run(ctx, func(ctx context.Context) error { raw := tg.NewClient(client) cb := func(ctx context.Context, dlg dialogs.Elem) error { // Skip deleted dialogs. if dlg.Deleted() { return nil } return dlg.Messages(raw).ForEach(ctx, func(ctx context.Context, elem messages.Elem) error { msg, ok := elem.Msg.(*tg.Message) if !ok { return nil } fmt.Println(msg.Message) return nil }) } return query.GetDialogs(raw).ForEach(ctx, cb) }); err != nil { panic(err) } }
Output:
func (*Query) Blocked ¶
func (q *Query) Blocked() *blocked.QueryBuilder
Blocked creates blocked.QueryBuilder
func (*Query) Dialogs ¶
func (q *Query) Dialogs() *dialogs.QueryBuilder
Dialogs creates dialogs.QueryBuilder
func (*Query) Featured ¶
func (q *Query) Featured() *featured.QueryBuilder
Featured creates featured.QueryBuilder
func (*Query) GetBlocked ¶
func (q *Query) GetBlocked() *blocked.GetBlockedQueryBuilder
GetBlocked creates blocked.GetBlockedQueryBuilder.
func (*Query) GetDialogs ¶
func (q *Query) GetDialogs() *dialogs.GetDialogsQueryBuilder
GetDialogs creates dialogs.GetDialogsQueryBuilder.
func (*Query) GetOldFeaturedStickers ¶
func (q *Query) GetOldFeaturedStickers() *featured.GetOldFeaturedStickersQueryBuilder
GetOldFeaturedStickers creates featured.QueryBuilder.
func (*Query) GetParticipants ¶
func (q *Query) GetParticipants(channel tg.InputChannelClass) *participants.GetParticipantsQueryBuilder
GetParticipants creates participants.GetParticipantsQueryBuilder.
func (*Query) GetUserPhotos ¶
func (q *Query) GetUserPhotos(user tg.InputUserClass) *photos.GetUserPhotosQueryBuilder
GetUserPhotos creates photos.GetUserPhotosQueryBuilder.
func (*Query) Messages ¶
func (q *Query) Messages() *messages.QueryBuilder
Messages creates messages.QueryBuilder.
func (*Query) Participants ¶
func (q *Query) Participants() *participants.QueryBuilder
Participants creates participants.QueryBuilder
func (*Query) Photos ¶
func (q *Query) Photos() *photos.QueryBuilder
Photos creates photos.QueryBuilder
Directories ¶
Path | Synopsis |
---|---|
Package cached contains cached query helpers.
|
Package cached contains cached query helpers. |
channels
|
|
participants
Package participants contains channel participants iteration helper.
|
Package participants contains channel participants iteration helper. |
contacts
|
|
blocked
Package blocked contains blocked contacts iteration helper.
|
Package blocked contains blocked contacts iteration helper. |
Package dialogs contains dialog iteration helper.
|
Package dialogs contains dialog iteration helper. |
Package hasher contains Telegram pagination hash implementation.
|
Package hasher contains Telegram pagination hash implementation. |
internal
|
|
genutil
Package genutil is a utility package for query helpers codegeneration.
|
Package genutil is a utility package for query helpers codegeneration. |
Package messages contains message iteration helper.
|
Package messages contains message iteration helper. |
stickers/featured
Package featured contains featured stickers iteration helper.
|
Package featured contains featured stickers iteration helper. |
Package photos contains photos iteration helper.
|
Package photos contains photos iteration helper. |