UNPKG

tgsnake

Version:

Telegram MTProto framework for nodejs.

353 lines (352 loc) 14.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ChatMemberBanned = exports.ChatMemberLeft = exports.ChatMemberRestricted = exports.ChatMemberMember = exports.ChatMemberAdministrator = exports.ChatMemberOwner = exports.ChatMemberUpdated = void 0; exports.ChatMember = ChatMember; const TL_js_1 = require("../TL.js"); const platform_node_js_1 = require("../../platform.node.js"); const Utilities_js_1 = require("../../Utilities.js"); const User_js_1 = require("../Advanced/User.js"); const Chat_js_1 = require("../Advanced/Chat.js"); class ChatMemberUpdated extends TL_js_1.TLObject { chat; from; date; viaChatFolderInviteLink; oldChatMember; newChatMember; inviteLink; constructor({ chat, from, date, viaChatFolderInviteLink, oldChatMember, newChatMember, inviteLink, }, client) { super(client); this.chat = chat; this.from = from; this.date = date; this.oldChatMember = oldChatMember; this.newChatMember = newChatMember; this.viaChatFolderInviteLink = viaChatFolderInviteLink; this.inviteLink = inviteLink; } static parse(client, update, chats, users) { if (update instanceof platform_node_js_1.Raw.UpdateChatParticipant) { const chat = Chat_js_1.Chat.parseChat(client, chats.find((c) => c.id === update.chatId)); const user = User_js_1.User.parse(client, users.find((u) => u.id === update.userId)); return new ChatMemberUpdated({ chat: chat, from: user, date: new Date(update.date * 1000), oldChatMember: ChatMember(client, users, update.prevParticipant), newChatMember: ChatMember(client, users, update.newParticipant), viaChatFolderInviteLink: false, inviteLink: update.invite?.link, }, client); } const chat = Chat_js_1.Chat.parseChannel(client, chats.find((c) => c.id === update.channelId)); const user = User_js_1.User.parse(client, users.find((u) => u.id === update.userId)); return new ChatMemberUpdated({ chat: chat, from: user, date: new Date(update.date * 1000), oldChatMember: ChatMember(client, users, update.prevParticipant), newChatMember: ChatMember(client, users, update.newParticipant), viaChatFolderInviteLink: update.viaChatlist ?? false, inviteLink: update.invite?.link, }, client); } } exports.ChatMemberUpdated = ChatMemberUpdated; class ChatMemberOwner extends TL_js_1.TLObject { status; user; isAnonymous; customTitle; constructor({ status, user, isAnonymous, customTitle }, client) { super(client); this.status = status; this.user = user; this.isAnonymous = isAnonymous; this.customTitle = customTitle; } static parse(client, member, users) { if (member instanceof platform_node_js_1.Raw.ChatParticipantCreator) { const user = User_js_1.User.parse(client, users.find((u) => u.id === member.userId)); return new ChatMemberOwner({ status: 'creator', isAnonymous: false, user: user, }, client); } const user = User_js_1.User.parse(client, users.find((u) => u.id === member.userId)); return new ChatMemberOwner({ status: 'creator', user: user, customTitle: member.rank, isAnonymous: member.adminRights.anonymous || false, }, client); } } exports.ChatMemberOwner = ChatMemberOwner; class ChatMemberAdministrator extends TL_js_1.TLObject { status; user; canBeEdited; isAnonymous; canManageChat; canDeleteMessages; canRestrictMembers; canManageVideoChats; canPromoteMembers; canChangeInfo; canInviteUsers; joinedDate; canPostMessages; canEditMessages; canPinMessages; canManageTopics; customTitle; constructor({ status, user, canBeEdited, isAnonymous, canManageChat, canDeleteMessages, canRestrictMembers, canManageVideoChats, canPromoteMembers, canChangeInfo, canInviteUsers, joinedDate, canPostMessages, canEditMessages, canPinMessages, canManageTopics, customTitle, }, client) { super(client); this.status = status; this.user = user; this.canBeEdited = canBeEdited; this.isAnonymous = isAnonymous; this.canManageChat = canManageChat; this.canDeleteMessages = canDeleteMessages; this.canRestrictMembers = canRestrictMembers; this.canManageVideoChats = canManageVideoChats; this.canPromoteMembers = canPromoteMembers; this.canChangeInfo = canChangeInfo; this.canInviteUsers = canInviteUsers; this.joinedDate = joinedDate; this.canPostMessages = canPostMessages; this.canEditMessages = canEditMessages; this.canPinMessages = canPinMessages; this.canManageTopics = canManageTopics; this.customTitle = customTitle; } static parse(client, member, users) { if (member instanceof platform_node_js_1.Raw.ChatParticipantAdmin) { const user = User_js_1.User.parse(client, users.find((u) => u.id === member.userId)); return new ChatMemberAdministrator({ status: 'administrator', user: user, canBeEdited: true, isAnonymous: false, canManageChat: true, canDeleteMessages: true, canRestrictMembers: true, canManageVideoChats: true, canPromoteMembers: true, canChangeInfo: true, canInviteUsers: true, joinedDate: new Date(member.date * 1000), }, client); } const user = User_js_1.User.parse(client, users.find((u) => u.id === member.userId)); return new ChatMemberAdministrator({ status: 'administrator', user: user, canBeEdited: member.canEdit ?? true, isAnonymous: member.adminRights.anonymous ?? false, canManageChat: member.adminRights.other ?? true, canDeleteMessages: member.adminRights .deleteMessages ?? true, canRestrictMembers: member.adminRights.banUsers ?? true, canManageVideoChats: member.adminRights.manageCall ?? true, canPromoteMembers: member.adminRights.addAdmins ?? true, canChangeInfo: member.adminRights.changeInfo ?? true, canInviteUsers: member.adminRights .inviteUsers ?? true, joinedDate: new Date(member.date * 1000), canPostMessages: member.adminRights.postMessages, canEditMessages: member.adminRights.editMessages, canPinMessages: member.adminRights .pinMessages, canManageTopics: member.adminRights.manageTopics, customTitle: member.rank, }, client); } } exports.ChatMemberAdministrator = ChatMemberAdministrator; class ChatMemberMember extends TL_js_1.TLObject { status; user; joinedDate; constructor({ status, user, joinedDate }, client) { super(client); this.status = status; this.user = user; this.joinedDate = joinedDate; } static parse(client, member, users) { if (member instanceof platform_node_js_1.Raw.ChatParticipant) { const user = User_js_1.User.parse(client, users.find((u) => u.id === member.userId)); return new ChatMemberMember({ status: 'member', user: user, joinedDate: new Date(member.date * 1000), }, client); } if (member instanceof platform_node_js_1.Raw.ChannelParticipantSelf) { const user = User_js_1.User.parse(client, users.find((u) => u.id === member.userId)); return new ChatMemberMember({ status: 'member', user: user, joinedDate: new Date(member.date * 1000), }, client); } const user = User_js_1.User.parse(client, users.find((u) => u.id === member.userId)); return new ChatMemberMember({ status: 'member', user: user, joinedDate: new Date(member.date * 1000), }, client); } } exports.ChatMemberMember = ChatMemberMember; class ChatMemberRestricted extends TL_js_1.TLObject { status; user; isMember; canSendMessages; canSendAudios; canSendDocument; canSendPhotos; canSendVideos; canSendVideoNotes; canSendVoiceNotes; canSendPolls; canSendOtherMessages; canAddWebPagePreviews; canChangeInfo; canInviteUsers; canPinMessages; canManageTopics; untilDate; joinedDate; constructor({ status, user, isMember, canSendMessages, canSendAudios, canSendDocument, canSendPhotos, canSendVideos, canSendVideoNotes, canSendVoiceNotes, canSendPolls, canSendOtherMessages, canAddWebPagePreviews, canChangeInfo, canInviteUsers, canPinMessages, canManageTopics, untilDate, joinedDate, }, client) { super(client); this.status = status; this.user = user; this.isMember = isMember; this.canSendMessages = canSendMessages; this.canSendAudios = canSendAudios; this.canSendDocument = canSendDocument; this.canSendPhotos = canSendPhotos; this.canSendVideos = canSendVideos; this.canSendVideoNotes = canSendVideoNotes; this.canSendVoiceNotes = canSendVoiceNotes; this.canSendPolls = canSendPolls; this.canSendOtherMessages = canSendOtherMessages; this.canAddWebPagePreviews = canAddWebPagePreviews; this.canChangeInfo = canChangeInfo; this.canInviteUsers = canInviteUsers; this.canPinMessages = canPinMessages; this.canManageTopics = canManageTopics; this.untilDate = untilDate; this.joinedDate = joinedDate; } static parse(client, member, users) { const uid = (0, Utilities_js_1.getId)(member.peer) ?? BigInt(0); const user = User_js_1.User.parse(client, users.find((u) => u.id === uid)); return new ChatMemberRestricted({ status: 'restricted', user: user, isMember: Boolean(!member.left), canSendMessages: Boolean(!member.bannedRights.sendMessages), canSendAudios: Boolean(!member.bannedRights.sendMedia && !member.bannedRights.sendAudios), canSendDocument: Boolean(!member.bannedRights.sendMedia && !member.bannedRights.sendDocs), canSendPhotos: Boolean(!member.bannedRights.sendMedia && !member.bannedRights.sendPhotos), canSendVideos: Boolean(!member.bannedRights.sendMedia && !member.bannedRights.sendVideos), canSendVideoNotes: Boolean(!member.bannedRights.sendMedia && !member.bannedRights.sendRoundvideos), canSendVoiceNotes: Boolean(!member.bannedRights.sendMedia && !member.bannedRights.sendVoices), canSendPolls: Boolean(!member.bannedRights.sendMedia && !member.bannedRights.sendPolls), canSendOtherMessages: [ Boolean(!member.bannedRights.sendMedia && !member.bannedRights.sendStickers), Boolean(!member.bannedRights.sendMedia && !member.bannedRights.sendGifs), Boolean(!member.bannedRights.sendInline), Boolean(!member.bannedRights.sendGames), ].some((x) => x), canAddWebPagePreviews: Boolean(!member.bannedRights.embedLinks), canChangeInfo: Boolean(!member.bannedRights.changeInfo), canInviteUsers: Boolean(!member.bannedRights.inviteUsers), canPinMessages: Boolean(!member.bannedRights.pinMessages), canManageTopics: Boolean(!member.bannedRights.manageTopics), untilDate: member.bannedRights.untilDate < 30 ? Infinity : new Date(member.bannedRights.untilDate * 1000), joinedDate: new Date(member.date * 1000), }, client); } } exports.ChatMemberRestricted = ChatMemberRestricted; class ChatMemberLeft extends TL_js_1.TLObject { status; user; constructor({ status, user }, client) { super(client); this.status = status; this.user = user; } static parse(client, member, users) { const uid = (0, Utilities_js_1.getId)(member.peer) ?? BigInt(0); const user = User_js_1.User.parse(client, users.find((u) => u.id === uid)); return new ChatMemberLeft({ status: 'left', user: user, }, client); } } exports.ChatMemberLeft = ChatMemberLeft; class ChatMemberBanned extends TL_js_1.TLObject { status; user; untilDate; joinedDate; constructor({ status, user, untilDate, joinedDate }, client) { super(client); this.status = status; this.user = user; this.untilDate = untilDate; this.joinedDate = joinedDate; } static parse(client, member, users) { const uid = (0, Utilities_js_1.getId)(member.peer) ?? BigInt(0); const user = User_js_1.User.parse(client, users.find((u) => u.id === uid)); return new ChatMemberBanned({ status: member.bannedRights.viewMessages ? 'banned' : 'kicked', user: user, untilDate: member.bannedRights.untilDate < 30 ? Infinity : new Date(member.bannedRights.untilDate * 1000), joinedDate: new Date(member.date * 1000), }, client); } } exports.ChatMemberBanned = ChatMemberBanned; function ChatMember(client, users, member) { if (member) { if (member instanceof platform_node_js_1.Raw.ChannelParticipantCreator || member instanceof platform_node_js_1.Raw.ChatParticipantCreator) { return ChatMemberOwner.parse(client, member, users); } if (member instanceof platform_node_js_1.Raw.ChannelParticipantAdmin || member instanceof platform_node_js_1.Raw.ChatParticipantAdmin) { return ChatMemberAdministrator.parse(client, member, users); } if (member instanceof platform_node_js_1.Raw.ChannelParticipantLeft) { return ChatMemberLeft.parse(client, member, users); } if (member instanceof platform_node_js_1.Raw.ChannelParticipantBanned) { if (member.left) { return ChatMemberBanned.parse(client, member, users); } return ChatMemberRestricted.parse(client, member, users); } return ChatMemberMember.parse(client, member, users); } }