Path: blob/master/node_modules/@adiwajshing/baileys/lib/Socket/groups.js
2593 views
"use strict";1Object.defineProperty(exports, "__esModule", { value: true });2exports.extractGroupMetadata = exports.makeGroupsSocket = void 0;3const Utils_1 = require("../Utils");4const WABinary_1 = require("../WABinary");5const socket_1 = require("./socket");6const makeGroupsSocket = (config) => {7const sock = socket_1.makeSocket(config);8const { query } = sock;9const groupQuery = async (jid, type, content) => (query({10tag: 'iq',11attrs: {12type,13xmlns: 'w:g2',14to: jid,15},16content17}));18const groupMetadata = async (jid) => {19const result = await groupQuery(jid, 'get', [{ tag: 'query', attrs: { request: 'interactive' } }]);20return exports.extractGroupMetadata(result);21};22return {23...sock,24groupMetadata,25groupCreate: async (subject, participants) => {26const key = Utils_1.generateMessageID();27const result = await groupQuery('@g.us', 'set', [28{29tag: 'create',30attrs: {31subject,32key33},34content: participants.map(jid => ({35tag: 'participant',36attrs: { jid }37}))38}39]);40return exports.extractGroupMetadata(result);41},42groupLeave: async (id) => {43await groupQuery('@g.us', 'set', [44{45tag: 'leave',46attrs: {},47content: [48{ tag: 'group', attrs: { id } }49]50}51]);52},53groupUpdateSubject: async (jid, subject) => {54await groupQuery(jid, 'set', [55{56tag: 'subject',57attrs: {},58content: Buffer.from(subject, 'utf-8')59}60]);61},62groupParticipantsUpdate: async (jid, participants, action) => {63const result = await groupQuery(jid, 'set', participants.map(jid => ({64tag: action,65attrs: {},66content: [{ tag: 'participant', attrs: { jid } }]67})));68const node = WABinary_1.getBinaryNodeChild(result, action);69const participantsAffected = WABinary_1.getBinaryNodeChildren(node, 'participant');70return participantsAffected.map(p => p.attrs.jid);71},72groupUpdateDescription: async (jid, description) => {73var _a;74const metadata = await groupMetadata(jid);75const prev = (_a = metadata.descId) !== null && _a !== void 0 ? _a : null;76await groupQuery(jid, 'set', [77{78tag: 'description',79attrs: {80...(description ? { id: Utils_1.generateMessageID() } : { delete: 'true' }),81...(prev ? { prev } : {})82},83content: description ? [{ tag: 'body', attrs: {}, content: Buffer.from(description, 'utf-8') }] : null84}85]);86},87groupInviteCode: async (jid) => {88const result = await groupQuery(jid, 'get', [{ tag: 'invite', attrs: {} }]);89const inviteNode = WABinary_1.getBinaryNodeChild(result, 'invite');90return inviteNode.attrs.code;91},92groupRevokeInvite: async (jid) => {93const result = await groupQuery(jid, 'set', [{ tag: 'invite', attrs: {} }]);94const inviteNode = WABinary_1.getBinaryNodeChild(result, 'invite');95return inviteNode.attrs.code;96},97groupAcceptInvite: async (code) => {98const results = await groupQuery('@g.us', 'set', [{ tag: 'invite', attrs: { code } }]);99const result = WABinary_1.getBinaryNodeChild(results, 'group');100return result.attrs.jid;101},102groupToggleEphemeral: async (jid, ephemeralExpiration) => {103const content = ephemeralExpiration ?104{ tag: 'ephemeral', attrs: { ephemeral: ephemeralExpiration.toString() } } :105{ tag: 'not_ephemeral', attrs: {} };106await groupQuery(jid, 'set', [content]);107},108groupSettingUpdate: async (jid, setting) => {109await groupQuery(jid, 'set', [{ tag: setting, attrs: {} }]);110},111groupFetchAllParticipating: async () => {112const result = await query({113tag: 'iq',114attrs: {115to: '@g.us',116xmlns: 'w:g2',117type: 'get',118},119content: [120{121tag: 'participating',122attrs: {},123content: [124{ tag: 'participants', attrs: {} },125{ tag: 'description', attrs: {} }126]127}128]129});130const data = {};131const groupsChild = WABinary_1.getBinaryNodeChild(result, 'groups');132if (groupsChild) {133const groups = WABinary_1.getBinaryNodeChildren(groupsChild, 'group');134for (const groupNode of groups) {135const meta = exports.extractGroupMetadata({136tag: 'result',137attrs: {},138content: [groupNode]139});140data[meta.id] = meta;141}142}143return data;144}145};146};147exports.makeGroupsSocket = makeGroupsSocket;148const extractGroupMetadata = (result) => {149var _a, _b;150const group = WABinary_1.getBinaryNodeChild(result, 'group');151const descChild = WABinary_1.getBinaryNodeChild(group, 'description');152let desc;153let descId;154if (descChild) {155desc = (_a = WABinary_1.getBinaryNodeChild(descChild, 'body')) === null || _a === void 0 ? void 0 : _a.content;156descId = descChild.attrs.id;157}158const groupId = group.attrs.id.includes('@') ? group.attrs.id : WABinary_1.jidEncode(group.attrs.id, 'g.us');159const eph = (_b = WABinary_1.getBinaryNodeChild(group, 'ephemeral')) === null || _b === void 0 ? void 0 : _b.attrs.expiration;160const metadata = {161id: groupId,162subject: group.attrs.subject,163creation: +group.attrs.creation,164owner: group.attrs.creator ? WABinary_1.jidNormalizedUser(group.attrs.creator) : undefined,165desc,166descId,167restrict: !!WABinary_1.getBinaryNodeChild(group, 'locked'),168announce: !!WABinary_1.getBinaryNodeChild(group, 'announcement'),169participants: WABinary_1.getBinaryNodeChildren(group, 'participant').map(({ attrs }) => {170return {171id: attrs.jid,172admin: attrs.type || null,173};174}),175ephemeralDuration: eph ? +eph : undefined176};177return metadata;178};179exports.extractGroupMetadata = extractGroupMetadata;180181182