diff --git a/src/Socket/groups.ts b/src/Socket/groups.ts index 5e6b75d..cfc11a9 100644 --- a/src/Socket/groups.ts +++ b/src/Socket/groups.ts @@ -318,6 +318,7 @@ export const extractGroupMetadata = (result: BinaryNode) => { const groupId = group.attrs.id.includes('@') ? group.attrs.id : jidEncode(group.attrs.id, 'g.us') const eph = getBinaryNodeChild(group, 'ephemeral')?.attrs.expiration + const memberAddMode = getBinaryNodeChildString(group, 'member_add_mode') == "all_member_add" const metadata: GroupMetadata = { id: groupId, subject: group.attrs.subject, @@ -330,6 +331,9 @@ export const extractGroupMetadata = (result: BinaryNode) => { descId, restrict: !!getBinaryNodeChild(group, 'locked'), announce: !!getBinaryNodeChild(group, 'announcement'), + isCommunity: !!getBinaryNodeChild(group, 'parent'), + isCommunityAnnounce: !!getBinaryNodeChild(group, 'default_sub_group'), + memberAddMode, participants: getBinaryNodeChildren(group, 'participant').map( ({ attrs }) => { return { diff --git a/src/Types/GroupMetadata.ts b/src/Types/GroupMetadata.ts index 19c5665..bcb8f4a 100644 --- a/src/Types/GroupMetadata.ts +++ b/src/Types/GroupMetadata.ts @@ -20,6 +20,12 @@ export interface GroupMetadata { restrict?: boolean /** is set when the group only allows admins to write messages */ announce?: boolean + /** is set when the group also allows members to add participants */ + memberAddMode?: boolean + /** is this a community */ + isCommunity?: boolean + /** is this the announce of a community */ + isCommunityAnnounce?: boolean /** number of group participants */ size?: number // Baileys modified array @@ -40,4 +46,4 @@ export interface WAGroupCreateResponse { export interface GroupModificationResponse { status: number participants?: { [key: string]: {} } -} \ No newline at end of file +}