Files
mautrix-telegram/pkg/gotd/telegram/peers/members/channel_query.go
T
2025-06-27 20:03:37 -07:00

60 lines
1.6 KiB
Go

package members
import (
"go.mau.fi/mautrix-telegram/pkg/gotd/telegram/peers"
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
)
// ChannelQuery is builder for channel members querying.
type ChannelQuery struct {
Channel peers.Channel
}
func (q ChannelQuery) query(filter tg.ChannelParticipantsFilterClass) *ChannelMembers {
return &ChannelMembers{
m: q.Channel.Manager(),
filter: filter,
channel: q.Channel,
}
}
// Recent queries recent members.
func (q ChannelQuery) Recent() *ChannelMembers {
return q.query(&tg.ChannelParticipantsRecent{})
}
// Admins queries admins members.
func (q ChannelQuery) Admins() *ChannelMembers {
return q.query(&tg.ChannelParticipantsAdmins{})
}
// Kicked queries kicked members.
func (q ChannelQuery) Kicked(query string) *ChannelMembers {
return q.query(&tg.ChannelParticipantsKicked{Q: query})
}
// Bots queries bots members.
func (q ChannelQuery) Bots() *ChannelMembers {
return q.query(&tg.ChannelParticipantsBots{})
}
// Banned queries banned members.
func (q ChannelQuery) Banned(query string) *ChannelMembers {
return q.query(&tg.ChannelParticipantsBanned{Q: query})
}
// Search queries members by given name.
func (q ChannelQuery) Search(query string) *ChannelMembers {
return q.query(&tg.ChannelParticipantsSearch{Q: query})
}
// Contacts queries members that are also contacts.
func (q ChannelQuery) Contacts(query string) *ChannelMembers {
return q.query(&tg.ChannelParticipantsContacts{Q: query})
}
// Custom creates query with custom filter.
func (q ChannelQuery) Custom(filter tg.ChannelParticipantsFilterClass) *ChannelMembers {
return q.query(filter)
}