7a04f298d2
- update to latest telegram layer - remove some references to fields in tg.Entities that don't exist in the schema - originally added here: https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e - referenced here - https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3 - https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
119 lines
4.0 KiB
Go
119 lines
4.0 KiB
Go
package members
|
|
|
|
import (
|
|
"time"
|
|
|
|
"go.mau.fi/mautrix-telegram/pkg/gotd/tg"
|
|
)
|
|
|
|
// AdminRights represents admin right settings.
|
|
type AdminRights struct {
|
|
// Indicates the role (rank) of the admin in the group: just an arbitrary string.
|
|
//
|
|
// If empty, will not be used.
|
|
Rank string
|
|
// If set, allows the admin to modify the description of the channel/supergroup.
|
|
ChangeInfo bool
|
|
// If set, allows the admin to post messages in the channel.
|
|
PostMessages bool
|
|
// If set, allows the admin to also edit messages from other admins in the channel.
|
|
EditMessages bool
|
|
// If set, allows the admin to also delete messages from other admins in the channel.
|
|
DeleteMessages bool
|
|
// If set, allows the admin to ban users from the channel/supergroup.
|
|
BanUsers bool
|
|
// If set, allows the admin to invite users in the channel/supergroup.
|
|
InviteUsers bool
|
|
// If set, allows the admin to pin messages in the channel/supergroup.
|
|
PinMessages bool
|
|
// If set, allows the admin to add other admins with the same (or more limited)
|
|
// permissions in the channel/supergroup.
|
|
AddAdmins bool
|
|
// Whether this admin is anonymous.
|
|
Anonymous bool
|
|
// If set, allows the admin to change group call/livestream settings.
|
|
ManageCall bool
|
|
// Set this flag if none of the other flags are set, but you still want the user to be an
|
|
// admin.
|
|
Other bool
|
|
}
|
|
|
|
// IntoChatAdminRights converts AdminRights into tg.ChatAdminRights.
|
|
func (b AdminRights) IntoChatAdminRights() (r tg.ChatAdminRights) {
|
|
r.ChangeInfo = b.ChangeInfo
|
|
r.PostMessages = b.PostMessages
|
|
r.EditMessages = b.EditMessages
|
|
r.DeleteMessages = b.DeleteMessages
|
|
r.BanUsers = b.BanUsers
|
|
r.InviteUsers = b.InviteUsers
|
|
r.PinMessages = b.PinMessages
|
|
r.AddAdmins = b.AddAdmins
|
|
r.Anonymous = b.Anonymous
|
|
r.ManageCall = b.ManageCall
|
|
r.Other = b.Other
|
|
r.SetFlags()
|
|
return r
|
|
}
|
|
|
|
// MemberRights represents member right settings.
|
|
type MemberRights struct {
|
|
// If set, does not allow a user to view messages in a supergroup/channel/chat.
|
|
//
|
|
// In fact, user will be kicked.
|
|
DenyViewMessages bool
|
|
// If set, does not allow a user to send messages in a supergroup/chat.
|
|
DenySendMessages bool
|
|
// If set, does not allow a user to send any media in a supergroup/chat.
|
|
DenySendMedia bool
|
|
// If set, does not allow a user to send stickers in a supergroup/chat.
|
|
DenySendStickers bool
|
|
// If set, does not allow a user to send gifs in a supergroup/chat.
|
|
DenySendGifs bool
|
|
// If set, does not allow a user to send games in a supergroup/chat.
|
|
DenySendGames bool
|
|
// If set, does not allow a user to use inline bots in a supergroup/chat.
|
|
DenySendInline bool
|
|
// If set, does not allow a user to embed links in the messages of a supergroup/chat.
|
|
DenyEmbedLinks bool
|
|
// If set, does not allow a user to send polls in a supergroup/chat.
|
|
DenySendPolls bool
|
|
// If set, does not allow any user to change the description of a supergroup/chat.
|
|
DenyChangeInfo bool
|
|
// If set, does not allow any user to invite users in a supergroup/chat.
|
|
DenyInviteUsers bool
|
|
// If set, does not allow any user to pin messages in a supergroup/chat.
|
|
DenyPinMessages bool
|
|
// Validity of said permissions (it is considered forever any value less than 30 seconds or more than 366 days).
|
|
//
|
|
// If value is zero, value will not be used.
|
|
UntilDate time.Time
|
|
}
|
|
|
|
// ApplyFor sets duration of validity of set rights.
|
|
func (b *MemberRights) ApplyFor(d time.Duration) {
|
|
b.UntilDate = time.Now().Add(d)
|
|
}
|
|
|
|
// IntoChatBannedRights converts MemberRights into tg.ChatBannedRights.
|
|
func (b MemberRights) IntoChatBannedRights() (r tg.ChatBannedRights) {
|
|
r = tg.ChatBannedRights{
|
|
ViewMessages: b.DenyViewMessages,
|
|
SendMessages: b.DenySendMessages,
|
|
SendMedia: b.DenySendMedia,
|
|
SendStickers: b.DenySendStickers,
|
|
SendGifs: b.DenySendGifs,
|
|
SendGames: b.DenySendGames,
|
|
SendInline: b.DenySendInline,
|
|
EmbedLinks: b.DenyEmbedLinks,
|
|
SendPolls: b.DenySendPolls,
|
|
ChangeInfo: b.DenyChangeInfo,
|
|
InviteUsers: b.DenyInviteUsers,
|
|
PinMessages: b.DenyPinMessages,
|
|
}
|
|
if !b.UntilDate.IsZero() {
|
|
r.UntilDate = int(b.UntilDate.Unix())
|
|
}
|
|
r.SetFlags()
|
|
return r
|
|
}
|