bb-fca 2.0.10 → 2.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,40 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.default = default_1;
37
+ const fs = __importStar(require("fs"));
4
38
  const utils = require("../../../utils");
5
39
  /**
6
40
  * @namespace api.group
@@ -494,6 +528,379 @@ function default_1(defaultFuncs, api, ctx) {
494
528
  hasNextPage: Boolean(pageInfo.has_next_page),
495
529
  };
496
530
  },
531
+ /**
532
+ * Resolves a Facebook share URL to the actual group ID.
533
+ *
534
+ * Accepts various formats:
535
+ * - Full URL: `https://www.facebook.com/share/g/14bKqsywAfu/`
536
+ * - Path only: `/share/g/14bKqsywAfu/`
537
+ * - Short key: `14bKqsywAfu`
538
+ *
539
+ * @param {string} shareUrl The share URL, path, or short key to resolve.
540
+ * @returns {Promise<{ groupID: string; name: string | null; url: string | null }>}
541
+ * The resolved group ID, name (if available), and canonical URL.
542
+ * @throws {Error} If the shareUrl is missing or the group ID cannot be extracted.
543
+ *
544
+ * @example
545
+ * const result = await api.group.resolveShareUrl('https://www.facebook.com/share/g/14bKqsywAfu/');
546
+ * console.log(result.groupID); // "1482314963016056"
547
+ */
548
+ resolveShareUrl: async function (shareUrl) {
549
+ if (!shareUrl || typeof shareUrl !== 'string') {
550
+ throw new Error('resolveShareUrl: shareUrl must be a non-empty string.');
551
+ }
552
+ // Normalize input to a full URL
553
+ let fullUrl;
554
+ if (shareUrl.startsWith('http://') || shareUrl.startsWith('https://')) {
555
+ fullUrl = shareUrl;
556
+ }
557
+ else if (shareUrl.startsWith('/')) {
558
+ fullUrl = 'https://www.facebook.com' + shareUrl;
559
+ }
560
+ else {
561
+ // Assume it's just the short key
562
+ fullUrl = `https://www.facebook.com/share/g/${shareUrl}/`;
563
+ }
564
+ // Fetch the share page - Facebook will embed the group data in the HTML
565
+ const allJsonData = await utils.json(fullUrl, ctx.jar, null, ctx.globalOptions, ctx);
566
+ if (!allJsonData || allJsonData.length === 0) {
567
+ throw new Error('resolveShareUrl: Could not fetch data from the share URL.');
568
+ }
569
+ // Strategy 1: Look for group object with __typename "Group" in the JSON data
570
+ let groupID = null;
571
+ let groupName = null;
572
+ let groupUrl = null;
573
+ const groupObj = deepFind(allJsonData, (val, _key) => val &&
574
+ typeof val === 'object' &&
575
+ val.__typename === 'Group' &&
576
+ typeof val.id === 'string');
577
+ if (groupObj) {
578
+ groupID = groupObj.id;
579
+ groupName = groupObj.name || null;
580
+ groupUrl = groupObj.url || null;
581
+ }
582
+ // Strategy 2: Look for groupID in various data patterns
583
+ if (!groupID) {
584
+ const groupIdVal = deepFind(allJsonData, (val, key) => (key === 'groupID' || key === 'group_id') &&
585
+ typeof val === 'string' &&
586
+ /^\d+$/.test(val));
587
+ if (groupIdVal) {
588
+ groupID = groupIdVal;
589
+ }
590
+ }
591
+ // Strategy 3: Look for meta property og:url or al:android:url containing group ID
592
+ if (!groupID) {
593
+ // Try to find the raw HTML response from the GET request
594
+ const res = await utils.get(fullUrl, ctx.jar, null, ctx.globalOptions, ctx);
595
+ const html = typeof res.body === 'string' ? res.body : String(res.body);
596
+ // Try og:url meta tag: <meta property="og:url" content="https://www.facebook.com/groups/XXXXXXX/" />
597
+ const ogUrlMatch = html.match(/property="og:url"\s+content="[^"]*\/groups\/(\d+)/);
598
+ if (ogUrlMatch) {
599
+ groupID = ogUrlMatch[1];
600
+ }
601
+ // Try al:android:url: fb://group/XXXXXXX
602
+ if (!groupID) {
603
+ const androidUrlMatch = html.match(/property="al:android:url"\s+content="fb:\/\/group\/(\d+)"/);
604
+ if (androidUrlMatch) {
605
+ groupID = androidUrlMatch[1];
606
+ }
607
+ }
608
+ // Try entity_id pattern in the HTML
609
+ if (!groupID) {
610
+ const entityIdMatch = html.match(/"entity_id":"(\d+)"/);
611
+ if (entityIdMatch) {
612
+ groupID = entityIdMatch[1];
613
+ }
614
+ }
615
+ // Try groupID in the URL of the final redirect
616
+ if (!groupID) {
617
+ const groupUrlMatch = html.match(/facebook\.com\/groups\/(\d+)/);
618
+ if (groupUrlMatch) {
619
+ groupID = groupUrlMatch[1];
620
+ }
621
+ }
622
+ // Extract group name from og:title if available
623
+ if (!groupName) {
624
+ const ogTitleMatch = html.match(/property="og:title"\s+content="([^"]*)"/);
625
+ if (ogTitleMatch) {
626
+ groupName = ogTitleMatch[1];
627
+ }
628
+ }
629
+ }
630
+ if (!groupID) {
631
+ throw new Error('resolveShareUrl: Could not extract group ID from the share URL. ' +
632
+ 'The link may be invalid, expired, or require authentication.');
633
+ }
634
+ if (!groupUrl) {
635
+ groupUrl = `https://www.facebook.com/groups/${groupID}/`;
636
+ }
637
+ return {
638
+ groupID,
639
+ name: groupName,
640
+ url: groupUrl,
641
+ };
642
+ },
643
+ /**
644
+ * Uploads a photo to Facebook for use in group posts.
645
+ *
646
+ * The photo is uploaded to `upload.facebook.com` with the group discussion
647
+ * route context (`CometGroupDiscussionRoute`), making it ready to be
648
+ * attached to a group post via {@link createGroupPost}.
649
+ *
650
+ * @param {string | string[]} photoPaths - A single file path or an array of file paths to upload.
651
+ * @returns {Promise<{ photoID: string; uploadID: string; data: any }[]>}
652
+ * Array of upload results, one per photo, each containing:
653
+ * - `photoID` – The Facebook-assigned photo ID (use in `createGroupPost`).
654
+ * - `uploadID` – The client-generated upload ID.
655
+ * - `data` – The raw server response payload.
656
+ * @throws {Error} If any path is missing, not a string, or doesn't exist on disk.
657
+ *
658
+ * @example
659
+ * const [photo] = await api.group.uploadPhoto('/path/to/image.jpg');
660
+ * const post = await api.group.createGroupPost('123456789', {
661
+ * message: 'Check this out!',
662
+ * photos: [photo.photoID],
663
+ * });
664
+ */
665
+ uploadPhoto: async function (photoPaths) {
666
+ const paths = Array.isArray(photoPaths) ? photoPaths : [photoPaths];
667
+ if (paths.length === 0) {
668
+ throw new Error('uploadPhoto: at least one photo path is required.');
669
+ }
670
+ const results = [];
671
+ for (const photoPath of paths) {
672
+ if (!photoPath || typeof photoPath !== 'string') {
673
+ throw new Error('uploadPhoto: each photo path must be a non-empty string.');
674
+ }
675
+ if (!fs.existsSync(photoPath)) {
676
+ throw new Error(`uploadPhoto: file not found: ${photoPath}`);
677
+ }
678
+ const photoStream = fs.createReadStream(photoPath);
679
+ const uploadId = `jsc_c_${Math.random().toString(36).substring(2, 11)}`;
680
+ // Build URL with query parameters matching the captured request
681
+ const url = new URL('https://upload.facebook.com/ajax/react_composer/attachments/photo/upload');
682
+ url.searchParams.append('av', ctx.userID);
683
+ url.searchParams.append('__aaid', '0');
684
+ url.searchParams.append('__user', ctx.userID);
685
+ url.searchParams.append('__a', '1');
686
+ url.searchParams.append('__req', '1');
687
+ url.searchParams.append('__hs', '20558.HCSV2:comet_pkg.2.1...0');
688
+ url.searchParams.append('dpr', '1');
689
+ url.searchParams.append('__ccg', 'EXCELLENT');
690
+ url.searchParams.append('__comet_req', '15');
691
+ url.searchParams.append('fb_dtsg', ctx.fb_dtsg);
692
+ url.searchParams.append('jazoest', ctx.jazoest);
693
+ url.searchParams.append('lsd', ctx.lsd || ctx.fb_dtsg);
694
+ url.searchParams.append('__spin_r', '1037381017');
695
+ url.searchParams.append('__spin_b', 'trunk');
696
+ url.searchParams.append('__spin_t', Math.floor(Date.now() / 1000).toString());
697
+ url.searchParams.append('__crn', 'comet.fbweb.CometGroupDiscussionRoute');
698
+ // Multipart form fields
699
+ const form = {
700
+ source: '8',
701
+ profile_id: ctx.userID,
702
+ waterfallxapp: 'comet',
703
+ farr: photoStream,
704
+ upload_id: uploadId,
705
+ };
706
+ const uploadResponse = await utils.postFormData(url.toString(), ctx.jar, form, ctx.globalOptions, ctx);
707
+ const uploadResult = JSON.parse(uploadResponse.body.toString().replace(/^for \(;;\);/, ''));
708
+ if (uploadResult.error || uploadResult.errors) {
709
+ throw new Error(JSON.stringify(uploadResult.error || uploadResult.errors));
710
+ }
711
+ const photoId = uploadResult.payload?.fbid ||
712
+ uploadResult.payload?.photoID ||
713
+ null;
714
+ results.push({
715
+ photoID: photoId,
716
+ uploadID: uploadId,
717
+ data: uploadResult,
718
+ });
719
+ }
720
+ return results;
721
+ },
722
+ /**
723
+ * Creates a post in a Facebook group, optionally with photo attachments and a title.
724
+ *
725
+ * @param {string} groupID - The ID of the group to post in.
726
+ * @param {object} options - Post options.
727
+ * @param {string} [options.message=''] - The text content of the post.
728
+ * @param {string} [options.title] - Optional post title (for groups that support titled posts).
729
+ * @param {string[]} [options.photos=[]] - Array of photo IDs from {@link uploadPhoto}.
730
+ * @returns {Promise<{ success: boolean; postID: string | null; url: string | null; data: any }>}
731
+ * @throws {Error} If groupID is missing or the API request fails.
732
+ *
733
+ * @example
734
+ * // Text-only post
735
+ * await api.group.createGroupPost('123456789', { message: 'Hello group!' });
736
+ *
737
+ * // Post with photos
738
+ * const photos = await api.group.uploadPhoto(['/path/a.jpg', '/path/b.jpg']);
739
+ * await api.group.createGroupPost('123456789', {
740
+ * message: 'Check these out!',
741
+ * photos: photos.map(p => p.photoID),
742
+ * });
743
+ *
744
+ * // Post with title and photos
745
+ * await api.group.createGroupPost('123456789', {
746
+ * message: 'Post body here',
747
+ * title: 'My Post Title',
748
+ * photos: photos.map(p => p.photoID),
749
+ * });
750
+ */
751
+ createGroupPost: async function (groupID, options = {}) {
752
+ if (!groupID)
753
+ throw new Error('createGroupPost: groupID is required.');
754
+ const postMessage = options.message || '';
755
+ const postTitle = options.title || null;
756
+ const photos = options.photos || [];
757
+ const composerSessionId = createBsid();
758
+ const variables = {
759
+ input: {
760
+ composer_entry_point: 'inline_composer',
761
+ composer_source_surface: 'group',
762
+ composer_type: 'group',
763
+ logging: {
764
+ composer_session_id: composerSessionId,
765
+ },
766
+ source: 'WWW',
767
+ message: {
768
+ ranges: [],
769
+ text: postMessage,
770
+ },
771
+ with_tags_ids: null,
772
+ inline_activities: [],
773
+ text_format_preset_id: '0',
774
+ group_flair: {
775
+ flair_id: null,
776
+ },
777
+ composed_text: {
778
+ block_data: ['{}'],
779
+ block_depths: [0],
780
+ block_types: [0],
781
+ blocks: [postMessage],
782
+ entities: ['[]'],
783
+ entity_map: '{}',
784
+ inline_styles: ['[]'],
785
+ },
786
+ navigation_data: {
787
+ attribution_id_v2: `CometGroupDiscussionRoot.react,comet.group,tap_bookmark,${Date.now()},352021,${groupID},,`,
788
+ },
789
+ tracking: [null],
790
+ event_share_metadata: {
791
+ surface: 'newsfeed',
792
+ },
793
+ audience: {
794
+ to_id: groupID,
795
+ },
796
+ actor_id: ctx.userID,
797
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
798
+ },
799
+ feedLocation: 'GROUP',
800
+ feedbackSource: 0,
801
+ focusCommentID: null,
802
+ gridMediaWidth: null,
803
+ groupID: null,
804
+ scale: 1,
805
+ privacySelectorRenderLocation: 'COMET_STREAM',
806
+ checkPhotosToReelsUpsellEligibility: false,
807
+ referringStoryRenderLocation: null,
808
+ renderLocation: 'group',
809
+ useDefaultActor: false,
810
+ inviteShortLinkKey: null,
811
+ isFeed: false,
812
+ isFundraiser: false,
813
+ isFunFactPost: false,
814
+ isGroup: true,
815
+ isEvent: false,
816
+ isTimeline: false,
817
+ isSocialLearning: false,
818
+ isPageNewsFeed: false,
819
+ isProfileReviews: false,
820
+ isWorkSharedDraft: false,
821
+ canUserManageOffers: false,
822
+ __relay_internal__pv__CometUFIShareActionMigrationrelayprovider: true,
823
+ __relay_internal__pv__GHLShouldChangeSponsoredDataFieldNamerelayprovider: true,
824
+ __relay_internal__pv__GHLShouldChangeAdIdFieldNamerelayprovider: true,
825
+ __relay_internal__pv__CometUFI_dedicated_comment_routable_dialog_gkrelayprovider: true,
826
+ __relay_internal__pv__CometUFICommentAutoTranslationTyperelayprovider: 'ORIGINAL',
827
+ __relay_internal__pv__CometUFICommentAvatarStickerAnimatedImagerelayprovider: false,
828
+ __relay_internal__pv__CometUFICommentActionLinksRewriteEnabledrelayprovider: false,
829
+ __relay_internal__pv__IsWorkUserrelayprovider: false,
830
+ __relay_internal__pv__CometUFIReactionsEnableShortNamerelayprovider: false,
831
+ __relay_internal__pv__CometUFISingleLineUFIrelayprovider: false,
832
+ __relay_internal__pv__CometFeedStory_enable_post_permalink_white_space_clickrelayprovider: false,
833
+ __relay_internal__pv__TestPilotShouldIncludeDemoAdUseCaserelayprovider: false,
834
+ __relay_internal__pv__FBReels_deprecate_short_form_video_context_gkrelayprovider: true,
835
+ __relay_internal__pv__FBReels_enable_view_dubbed_audio_type_gkrelayprovider: true,
836
+ __relay_internal__pv__CometImmersivePhotoCanUserDisable3DMotionrelayprovider: false,
837
+ __relay_internal__pv__WorkCometIsEmployeeGKProviderrelayprovider: false,
838
+ __relay_internal__pv__IsMergQAPollsrelayprovider: false,
839
+ __relay_internal__pv__FBReelsMediaFooter_comet_enable_reels_ads_gkrelayprovider: true,
840
+ __relay_internal__pv__FBReelsIFUTileContent_reelsIFUPlayOnHoverrelayprovider: true,
841
+ __relay_internal__pv__GroupsCometGYSJFeedItemHeightrelayprovider: 150,
842
+ __relay_internal__pv__ShouldEnableBakedInTextStoriesrelayprovider: false,
843
+ __relay_internal__pv__StoriesShouldIncludeFbNotesrelayprovider: false,
844
+ __relay_internal__pv__groups_comet_use_glvrelayprovider: false,
845
+ __relay_internal__pv__GHLShouldChangeSponsoredAuctionDistanceFieldNamerelayprovider: false,
846
+ __relay_internal__pv__GHLShouldUseSponsoredAuctionLabelFieldNameV1relayprovider: false,
847
+ __relay_internal__pv__GHLShouldUseSponsoredAuctionLabelFieldNameV2relayprovider: false,
848
+ };
849
+ // Attach post title if provided
850
+ if (postTitle) {
851
+ variables.input.post_message_title = { text: postTitle };
852
+ }
853
+ // Attach photos if provided
854
+ if (photos.length > 0) {
855
+ variables.input.attachments = photos
856
+ .filter(Boolean)
857
+ .map((photoID) => ({
858
+ photo: { id: String(photoID) },
859
+ }));
860
+ }
861
+ const form = {
862
+ av: ctx.userID,
863
+ __aaid: '0',
864
+ __user: ctx.userID,
865
+ __a: '1',
866
+ __req: '1z',
867
+ __hs: '20558.HCSV2:comet_pkg.2.1...0',
868
+ dpr: '1',
869
+ __ccg: 'EXCELLENT',
870
+ __comet_req: '15',
871
+ locale: 'vi_VN',
872
+ fb_dtsg: ctx.fb_dtsg,
873
+ jazoest: ctx.jazoest,
874
+ lsd: ctx.lsd || ctx.fb_dtsg,
875
+ __spin_r: '1037381017',
876
+ __spin_b: 'trunk',
877
+ __spin_t: Math.floor(Date.now() / 1000).toString(),
878
+ __crn: 'comet.fbweb.CometGroupDiscussionRoute',
879
+ fb_api_caller_class: 'RelayModern',
880
+ fb_api_req_friendly_name: 'ComposerStoryCreateMutation',
881
+ variables: JSON.stringify(variables),
882
+ server_timestamps: 'true',
883
+ doc_id: '34999618373018994',
884
+ };
885
+ const customHeader = {
886
+ 'x-fb-friendly-name': 'ComposerStoryCreateMutation',
887
+ 'x-fb-lsd': ctx.lsd || '',
888
+ 'x-asbd-id': '359341',
889
+ origin: 'https://www.facebook.com',
890
+ referer: `https://www.facebook.com/groups/${groupID}?locale=vi_VN`,
891
+ };
892
+ const res = await utils.post('https://www.facebook.com/api/graphql/', ctx.jar, form, ctx.globalOptions, ctx, customHeader);
893
+ const data = parseResponseBody(res.body);
894
+ if (data?.errors) {
895
+ throw new Error(JSON.stringify(data.errors));
896
+ }
897
+ return {
898
+ success: true,
899
+ postID: data?.data?.story_create?.story?.id || null,
900
+ url: data?.data?.story_create?.story?.url || null,
901
+ data,
902
+ };
903
+ },
497
904
  };
498
905
  return groupModule;
499
906
  }
@@ -1 +1 @@
1
- {"version":3,"file":"group.js","sourceRoot":"","sources":["../../../../src/deltas/apis/posting/group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group.js","sourceRoot":"","sources":["../../../../src/deltas/apis/posting/group.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -422,6 +422,24 @@ export interface GroupModule {
422
422
  keyword: string,
423
423
  options?: SearchGroupOptions,
424
424
  ): Promise<SearchGroupResult>;
425
+
426
+ /**
427
+ * Resolves a Facebook share URL to the actual group ID.
428
+ *
429
+ * Accepts various formats:
430
+ * - Full URL: `https://www.facebook.com/share/g/14bKqsywAfu/`
431
+ * - Path only: `/share/g/14bKqsywAfu/`
432
+ * - Short key: `14bKqsywAfu`
433
+ *
434
+ * @param shareUrl The share URL, path, or short key to resolve.
435
+ */
436
+ resolveShareUrl(
437
+ shareUrl: string,
438
+ ): Promise<{
439
+ groupID: string;
440
+ name: string | null;
441
+ url: string | null;
442
+ }>;
425
443
  }
426
444
 
427
445
  export interface MessageObject {
@@ -65,4 +65,92 @@ export default function (defaultFuncs: any, api: any, ctx: any): {
65
65
  cursor: string | null;
66
66
  hasNextPage: boolean;
67
67
  }>;
68
+ /**
69
+ * Resolves a Facebook share URL to the actual group ID.
70
+ *
71
+ * Accepts various formats:
72
+ * - Full URL: `https://www.facebook.com/share/g/14bKqsywAfu/`
73
+ * - Path only: `/share/g/14bKqsywAfu/`
74
+ * - Short key: `14bKqsywAfu`
75
+ *
76
+ * @param {string} shareUrl The share URL, path, or short key to resolve.
77
+ * @returns {Promise<{ groupID: string; name: string | null; url: string | null }>}
78
+ * The resolved group ID, name (if available), and canonical URL.
79
+ * @throws {Error} If the shareUrl is missing or the group ID cannot be extracted.
80
+ *
81
+ * @example
82
+ * const result = await api.group.resolveShareUrl('https://www.facebook.com/share/g/14bKqsywAfu/');
83
+ * console.log(result.groupID); // "1482314963016056"
84
+ */
85
+ resolveShareUrl: (shareUrl: string) => Promise<{
86
+ groupID: string;
87
+ name: string | null;
88
+ url: string | null;
89
+ }>;
90
+ /**
91
+ * Uploads a photo to Facebook for use in group posts.
92
+ *
93
+ * The photo is uploaded to `upload.facebook.com` with the group discussion
94
+ * route context (`CometGroupDiscussionRoute`), making it ready to be
95
+ * attached to a group post via {@link createGroupPost}.
96
+ *
97
+ * @param {string | string[]} photoPaths - A single file path or an array of file paths to upload.
98
+ * @returns {Promise<{ photoID: string; uploadID: string; data: any }[]>}
99
+ * Array of upload results, one per photo, each containing:
100
+ * - `photoID` – The Facebook-assigned photo ID (use in `createGroupPost`).
101
+ * - `uploadID` – The client-generated upload ID.
102
+ * - `data` – The raw server response payload.
103
+ * @throws {Error} If any path is missing, not a string, or doesn't exist on disk.
104
+ *
105
+ * @example
106
+ * const [photo] = await api.group.uploadPhoto('/path/to/image.jpg');
107
+ * const post = await api.group.createGroupPost('123456789', {
108
+ * message: 'Check this out!',
109
+ * photos: [photo.photoID],
110
+ * });
111
+ */
112
+ uploadPhoto: (photoPaths: string | string[]) => Promise<{
113
+ photoID: string;
114
+ uploadID: string;
115
+ data: any;
116
+ }[]>;
117
+ /**
118
+ * Creates a post in a Facebook group, optionally with photo attachments and a title.
119
+ *
120
+ * @param {string} groupID - The ID of the group to post in.
121
+ * @param {object} options - Post options.
122
+ * @param {string} [options.message=''] - The text content of the post.
123
+ * @param {string} [options.title] - Optional post title (for groups that support titled posts).
124
+ * @param {string[]} [options.photos=[]] - Array of photo IDs from {@link uploadPhoto}.
125
+ * @returns {Promise<{ success: boolean; postID: string | null; url: string | null; data: any }>}
126
+ * @throws {Error} If groupID is missing or the API request fails.
127
+ *
128
+ * @example
129
+ * // Text-only post
130
+ * await api.group.createGroupPost('123456789', { message: 'Hello group!' });
131
+ *
132
+ * // Post with photos
133
+ * const photos = await api.group.uploadPhoto(['/path/a.jpg', '/path/b.jpg']);
134
+ * await api.group.createGroupPost('123456789', {
135
+ * message: 'Check these out!',
136
+ * photos: photos.map(p => p.photoID),
137
+ * });
138
+ *
139
+ * // Post with title and photos
140
+ * await api.group.createGroupPost('123456789', {
141
+ * message: 'Post body here',
142
+ * title: 'My Post Title',
143
+ * photos: photos.map(p => p.photoID),
144
+ * });
145
+ */
146
+ createGroupPost: (groupID: string, options?: {
147
+ message?: string;
148
+ title?: string;
149
+ photos?: string[];
150
+ }) => Promise<{
151
+ success: boolean;
152
+ postID: string | null;
153
+ url: string | null;
154
+ data: any;
155
+ }>;
68
156
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bb-fca",
3
- "version": "2.0.10",
3
+ "version": "2.0.11",
4
4
  "description": "BB-FCA is a powerful and user-friendly Facebook Chat API wrapper for Node.js, designed to simplify the process of creating chatbots and automating interactions on Facebook Messenger. With BB-FCA, developers can easily send messages, manage conversations, and interact with the Facebook Messenger platform using a simple and intuitive API.",
5
5
  "main": "dist/core/client.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,3 +1,4 @@
1
+ import * as fs from 'fs';
1
2
  import utils = require('../../../utils');
2
3
 
3
4
  /**
@@ -632,6 +633,485 @@ export default function (defaultFuncs: any, api: any, ctx: any) {
632
633
  hasNextPage: Boolean(pageInfo.has_next_page),
633
634
  };
634
635
  },
636
+
637
+ /**
638
+ * Resolves a Facebook share URL to the actual group ID.
639
+ *
640
+ * Accepts various formats:
641
+ * - Full URL: `https://www.facebook.com/share/g/14bKqsywAfu/`
642
+ * - Path only: `/share/g/14bKqsywAfu/`
643
+ * - Short key: `14bKqsywAfu`
644
+ *
645
+ * @param {string} shareUrl The share URL, path, or short key to resolve.
646
+ * @returns {Promise<{ groupID: string; name: string | null; url: string | null }>}
647
+ * The resolved group ID, name (if available), and canonical URL.
648
+ * @throws {Error} If the shareUrl is missing or the group ID cannot be extracted.
649
+ *
650
+ * @example
651
+ * const result = await api.group.resolveShareUrl('https://www.facebook.com/share/g/14bKqsywAfu/');
652
+ * console.log(result.groupID); // "1482314963016056"
653
+ */
654
+ resolveShareUrl: async function (
655
+ shareUrl: string,
656
+ ): Promise<{ groupID: string; name: string | null; url: string | null }> {
657
+ if (!shareUrl || typeof shareUrl !== 'string') {
658
+ throw new Error(
659
+ 'resolveShareUrl: shareUrl must be a non-empty string.',
660
+ );
661
+ }
662
+
663
+ // Normalize input to a full URL
664
+ let fullUrl: string;
665
+ if (shareUrl.startsWith('http://') || shareUrl.startsWith('https://')) {
666
+ fullUrl = shareUrl;
667
+ } else if (shareUrl.startsWith('/')) {
668
+ fullUrl = 'https://www.facebook.com' + shareUrl;
669
+ } else {
670
+ // Assume it's just the short key
671
+ fullUrl = `https://www.facebook.com/share/g/${shareUrl}/`;
672
+ }
673
+
674
+ // Fetch the share page - Facebook will embed the group data in the HTML
675
+ const allJsonData = await utils.json(
676
+ fullUrl,
677
+ ctx.jar,
678
+ null,
679
+ ctx.globalOptions,
680
+ ctx,
681
+ );
682
+
683
+ if (!allJsonData || allJsonData.length === 0) {
684
+ throw new Error(
685
+ 'resolveShareUrl: Could not fetch data from the share URL.',
686
+ );
687
+ }
688
+
689
+ // Strategy 1: Look for group object with __typename "Group" in the JSON data
690
+ let groupID: string | null = null;
691
+ let groupName: string | null = null;
692
+ let groupUrl: string | null = null;
693
+
694
+ const groupObj = deepFind(
695
+ allJsonData,
696
+ (val, _key) =>
697
+ val &&
698
+ typeof val === 'object' &&
699
+ val.__typename === 'Group' &&
700
+ typeof val.id === 'string',
701
+ );
702
+
703
+ if (groupObj) {
704
+ groupID = groupObj.id;
705
+ groupName = groupObj.name || null;
706
+ groupUrl = groupObj.url || null;
707
+ }
708
+
709
+ // Strategy 2: Look for groupID in various data patterns
710
+ if (!groupID) {
711
+ const groupIdVal = deepFind(
712
+ allJsonData,
713
+ (val, key) =>
714
+ (key === 'groupID' || key === 'group_id') &&
715
+ typeof val === 'string' &&
716
+ /^\d+$/.test(val),
717
+ );
718
+ if (groupIdVal) {
719
+ groupID = groupIdVal;
720
+ }
721
+ }
722
+
723
+ // Strategy 3: Look for meta property og:url or al:android:url containing group ID
724
+ if (!groupID) {
725
+ // Try to find the raw HTML response from the GET request
726
+ const res = await utils.get(
727
+ fullUrl,
728
+ ctx.jar,
729
+ null,
730
+ ctx.globalOptions,
731
+ ctx,
732
+ );
733
+ const html = typeof res.body === 'string' ? res.body : String(res.body);
734
+
735
+ // Try og:url meta tag: <meta property="og:url" content="https://www.facebook.com/groups/XXXXXXX/" />
736
+ const ogUrlMatch = html.match(
737
+ /property="og:url"\s+content="[^"]*\/groups\/(\d+)/,
738
+ );
739
+ if (ogUrlMatch) {
740
+ groupID = ogUrlMatch[1];
741
+ }
742
+
743
+ // Try al:android:url: fb://group/XXXXXXX
744
+ if (!groupID) {
745
+ const androidUrlMatch = html.match(
746
+ /property="al:android:url"\s+content="fb:\/\/group\/(\d+)"/,
747
+ );
748
+ if (androidUrlMatch) {
749
+ groupID = androidUrlMatch[1];
750
+ }
751
+ }
752
+
753
+ // Try entity_id pattern in the HTML
754
+ if (!groupID) {
755
+ const entityIdMatch = html.match(/"entity_id":"(\d+)"/);
756
+ if (entityIdMatch) {
757
+ groupID = entityIdMatch[1];
758
+ }
759
+ }
760
+
761
+ // Try groupID in the URL of the final redirect
762
+ if (!groupID) {
763
+ const groupUrlMatch = html.match(
764
+ /facebook\.com\/groups\/(\d+)/,
765
+ );
766
+ if (groupUrlMatch) {
767
+ groupID = groupUrlMatch[1];
768
+ }
769
+ }
770
+
771
+ // Extract group name from og:title if available
772
+ if (!groupName) {
773
+ const ogTitleMatch = html.match(
774
+ /property="og:title"\s+content="([^"]*)"/,
775
+ );
776
+ if (ogTitleMatch) {
777
+ groupName = ogTitleMatch[1];
778
+ }
779
+ }
780
+ }
781
+
782
+ if (!groupID) {
783
+ throw new Error(
784
+ 'resolveShareUrl: Could not extract group ID from the share URL. ' +
785
+ 'The link may be invalid, expired, or require authentication.',
786
+ );
787
+ }
788
+
789
+ if (!groupUrl) {
790
+ groupUrl = `https://www.facebook.com/groups/${groupID}/`;
791
+ }
792
+
793
+ return {
794
+ groupID,
795
+ name: groupName,
796
+ url: groupUrl,
797
+ };
798
+ },
799
+
800
+ /**
801
+ * Uploads a photo to Facebook for use in group posts.
802
+ *
803
+ * The photo is uploaded to `upload.facebook.com` with the group discussion
804
+ * route context (`CometGroupDiscussionRoute`), making it ready to be
805
+ * attached to a group post via {@link createGroupPost}.
806
+ *
807
+ * @param {string | string[]} photoPaths - A single file path or an array of file paths to upload.
808
+ * @returns {Promise<{ photoID: string; uploadID: string; data: any }[]>}
809
+ * Array of upload results, one per photo, each containing:
810
+ * - `photoID` – The Facebook-assigned photo ID (use in `createGroupPost`).
811
+ * - `uploadID` – The client-generated upload ID.
812
+ * - `data` – The raw server response payload.
813
+ * @throws {Error} If any path is missing, not a string, or doesn't exist on disk.
814
+ *
815
+ * @example
816
+ * const [photo] = await api.group.uploadPhoto('/path/to/image.jpg');
817
+ * const post = await api.group.createGroupPost('123456789', {
818
+ * message: 'Check this out!',
819
+ * photos: [photo.photoID],
820
+ * });
821
+ */
822
+ uploadPhoto: async function (
823
+ photoPaths: string | string[],
824
+ ): Promise<{ photoID: string; uploadID: string; data: any }[]> {
825
+ const paths = Array.isArray(photoPaths) ? photoPaths : [photoPaths];
826
+
827
+ if (paths.length === 0) {
828
+ throw new Error('uploadPhoto: at least one photo path is required.');
829
+ }
830
+
831
+ const results: { photoID: string; uploadID: string; data: any }[] = [];
832
+
833
+ for (const photoPath of paths) {
834
+ if (!photoPath || typeof photoPath !== 'string') {
835
+ throw new Error('uploadPhoto: each photo path must be a non-empty string.');
836
+ }
837
+ if (!fs.existsSync(photoPath)) {
838
+ throw new Error(`uploadPhoto: file not found: ${photoPath}`);
839
+ }
840
+
841
+ const photoStream = fs.createReadStream(photoPath);
842
+
843
+ const uploadId = `jsc_c_${Math.random().toString(36).substring(2, 11)}`;
844
+
845
+ // Build URL with query parameters matching the captured request
846
+ const url = new URL(
847
+ 'https://upload.facebook.com/ajax/react_composer/attachments/photo/upload',
848
+ );
849
+ url.searchParams.append('av', ctx.userID);
850
+ url.searchParams.append('__aaid', '0');
851
+ url.searchParams.append('__user', ctx.userID);
852
+ url.searchParams.append('__a', '1');
853
+ url.searchParams.append('__req', '1');
854
+ url.searchParams.append('__hs', '20558.HCSV2:comet_pkg.2.1...0');
855
+ url.searchParams.append('dpr', '1');
856
+ url.searchParams.append('__ccg', 'EXCELLENT');
857
+ url.searchParams.append('__comet_req', '15');
858
+ url.searchParams.append('fb_dtsg', ctx.fb_dtsg);
859
+ url.searchParams.append('jazoest', ctx.jazoest);
860
+ url.searchParams.append('lsd', ctx.lsd || ctx.fb_dtsg);
861
+ url.searchParams.append('__spin_r', '1037381017');
862
+ url.searchParams.append('__spin_b', 'trunk');
863
+ url.searchParams.append('__spin_t', Math.floor(Date.now() / 1000).toString());
864
+ url.searchParams.append('__crn', 'comet.fbweb.CometGroupDiscussionRoute');
865
+
866
+ // Multipart form fields
867
+ const form = {
868
+ source: '8',
869
+ profile_id: ctx.userID,
870
+ waterfallxapp: 'comet',
871
+ farr: photoStream,
872
+ upload_id: uploadId,
873
+ };
874
+
875
+ const uploadResponse = await utils.postFormData(
876
+ url.toString(),
877
+ ctx.jar,
878
+ form,
879
+ ctx.globalOptions,
880
+ ctx,
881
+ );
882
+
883
+ const uploadResult = JSON.parse(
884
+ uploadResponse.body.toString().replace(/^for \(;;\);/, ''),
885
+ );
886
+
887
+ if (uploadResult.error || uploadResult.errors) {
888
+ throw new Error(
889
+ JSON.stringify(uploadResult.error || uploadResult.errors),
890
+ );
891
+ }
892
+
893
+ const photoId =
894
+ uploadResult.payload?.fbid ||
895
+ uploadResult.payload?.photoID ||
896
+ null;
897
+
898
+ results.push({
899
+ photoID: photoId,
900
+ uploadID: uploadId,
901
+ data: uploadResult,
902
+ });
903
+ }
904
+
905
+ return results;
906
+ },
907
+
908
+ /**
909
+ * Creates a post in a Facebook group, optionally with photo attachments and a title.
910
+ *
911
+ * @param {string} groupID - The ID of the group to post in.
912
+ * @param {object} options - Post options.
913
+ * @param {string} [options.message=''] - The text content of the post.
914
+ * @param {string} [options.title] - Optional post title (for groups that support titled posts).
915
+ * @param {string[]} [options.photos=[]] - Array of photo IDs from {@link uploadPhoto}.
916
+ * @returns {Promise<{ success: boolean; postID: string | null; url: string | null; data: any }>}
917
+ * @throws {Error} If groupID is missing or the API request fails.
918
+ *
919
+ * @example
920
+ * // Text-only post
921
+ * await api.group.createGroupPost('123456789', { message: 'Hello group!' });
922
+ *
923
+ * // Post with photos
924
+ * const photos = await api.group.uploadPhoto(['/path/a.jpg', '/path/b.jpg']);
925
+ * await api.group.createGroupPost('123456789', {
926
+ * message: 'Check these out!',
927
+ * photos: photos.map(p => p.photoID),
928
+ * });
929
+ *
930
+ * // Post with title and photos
931
+ * await api.group.createGroupPost('123456789', {
932
+ * message: 'Post body here',
933
+ * title: 'My Post Title',
934
+ * photos: photos.map(p => p.photoID),
935
+ * });
936
+ */
937
+ createGroupPost: async function (
938
+ groupID: string,
939
+ options: { message?: string; title?: string; photos?: string[] } = {},
940
+ ): Promise<{
941
+ success: boolean;
942
+ postID: string | null;
943
+ url: string | null;
944
+ data: any;
945
+ }> {
946
+ if (!groupID) throw new Error('createGroupPost: groupID is required.');
947
+
948
+ const postMessage = options.message || '';
949
+ const postTitle = options.title || null;
950
+ const photos = options.photos || [];
951
+
952
+ const composerSessionId = createBsid();
953
+
954
+ const variables: any = {
955
+ input: {
956
+ composer_entry_point: 'inline_composer',
957
+ composer_source_surface: 'group',
958
+ composer_type: 'group',
959
+ logging: {
960
+ composer_session_id: composerSessionId,
961
+ },
962
+ source: 'WWW',
963
+ message: {
964
+ ranges: [],
965
+ text: postMessage,
966
+ },
967
+ with_tags_ids: null,
968
+ inline_activities: [],
969
+ text_format_preset_id: '0',
970
+ group_flair: {
971
+ flair_id: null,
972
+ },
973
+ composed_text: {
974
+ block_data: ['{}'],
975
+ block_depths: [0],
976
+ block_types: [0],
977
+ blocks: [postMessage],
978
+ entities: ['[]'],
979
+ entity_map: '{}',
980
+ inline_styles: ['[]'],
981
+ },
982
+ navigation_data: {
983
+ attribution_id_v2: `CometGroupDiscussionRoot.react,comet.group,tap_bookmark,${Date.now()},352021,${groupID},,`,
984
+ },
985
+ tracking: [null],
986
+ event_share_metadata: {
987
+ surface: 'newsfeed',
988
+ },
989
+ audience: {
990
+ to_id: groupID,
991
+ },
992
+ actor_id: ctx.userID,
993
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
994
+ },
995
+ feedLocation: 'GROUP',
996
+ feedbackSource: 0,
997
+ focusCommentID: null,
998
+ gridMediaWidth: null,
999
+ groupID: null,
1000
+ scale: 1,
1001
+ privacySelectorRenderLocation: 'COMET_STREAM',
1002
+ checkPhotosToReelsUpsellEligibility: false,
1003
+ referringStoryRenderLocation: null,
1004
+ renderLocation: 'group',
1005
+ useDefaultActor: false,
1006
+ inviteShortLinkKey: null,
1007
+ isFeed: false,
1008
+ isFundraiser: false,
1009
+ isFunFactPost: false,
1010
+ isGroup: true,
1011
+ isEvent: false,
1012
+ isTimeline: false,
1013
+ isSocialLearning: false,
1014
+ isPageNewsFeed: false,
1015
+ isProfileReviews: false,
1016
+ isWorkSharedDraft: false,
1017
+ canUserManageOffers: false,
1018
+ __relay_internal__pv__CometUFIShareActionMigrationrelayprovider: true,
1019
+ __relay_internal__pv__GHLShouldChangeSponsoredDataFieldNamerelayprovider: true,
1020
+ __relay_internal__pv__GHLShouldChangeAdIdFieldNamerelayprovider: true,
1021
+ __relay_internal__pv__CometUFI_dedicated_comment_routable_dialog_gkrelayprovider: true,
1022
+ __relay_internal__pv__CometUFICommentAutoTranslationTyperelayprovider: 'ORIGINAL',
1023
+ __relay_internal__pv__CometUFICommentAvatarStickerAnimatedImagerelayprovider: false,
1024
+ __relay_internal__pv__CometUFICommentActionLinksRewriteEnabledrelayprovider: false,
1025
+ __relay_internal__pv__IsWorkUserrelayprovider: false,
1026
+ __relay_internal__pv__CometUFIReactionsEnableShortNamerelayprovider: false,
1027
+ __relay_internal__pv__CometUFISingleLineUFIrelayprovider: false,
1028
+ __relay_internal__pv__CometFeedStory_enable_post_permalink_white_space_clickrelayprovider: false,
1029
+ __relay_internal__pv__TestPilotShouldIncludeDemoAdUseCaserelayprovider: false,
1030
+ __relay_internal__pv__FBReels_deprecate_short_form_video_context_gkrelayprovider: true,
1031
+ __relay_internal__pv__FBReels_enable_view_dubbed_audio_type_gkrelayprovider: true,
1032
+ __relay_internal__pv__CometImmersivePhotoCanUserDisable3DMotionrelayprovider: false,
1033
+ __relay_internal__pv__WorkCometIsEmployeeGKProviderrelayprovider: false,
1034
+ __relay_internal__pv__IsMergQAPollsrelayprovider: false,
1035
+ __relay_internal__pv__FBReelsMediaFooter_comet_enable_reels_ads_gkrelayprovider: true,
1036
+ __relay_internal__pv__FBReelsIFUTileContent_reelsIFUPlayOnHoverrelayprovider: true,
1037
+ __relay_internal__pv__GroupsCometGYSJFeedItemHeightrelayprovider: 150,
1038
+ __relay_internal__pv__ShouldEnableBakedInTextStoriesrelayprovider: false,
1039
+ __relay_internal__pv__StoriesShouldIncludeFbNotesrelayprovider: false,
1040
+ __relay_internal__pv__groups_comet_use_glvrelayprovider: false,
1041
+ __relay_internal__pv__GHLShouldChangeSponsoredAuctionDistanceFieldNamerelayprovider: false,
1042
+ __relay_internal__pv__GHLShouldUseSponsoredAuctionLabelFieldNameV1relayprovider: false,
1043
+ __relay_internal__pv__GHLShouldUseSponsoredAuctionLabelFieldNameV2relayprovider: false,
1044
+ };
1045
+
1046
+ // Attach post title if provided
1047
+ if (postTitle) {
1048
+ variables.input.post_message_title = { text: postTitle };
1049
+ }
1050
+
1051
+ // Attach photos if provided
1052
+ if (photos.length > 0) {
1053
+ variables.input.attachments = photos
1054
+ .filter(Boolean)
1055
+ .map((photoID) => ({
1056
+ photo: { id: String(photoID) },
1057
+ }));
1058
+ }
1059
+
1060
+ const form = {
1061
+ av: ctx.userID,
1062
+ __aaid: '0',
1063
+ __user: ctx.userID,
1064
+ __a: '1',
1065
+ __req: '1z',
1066
+ __hs: '20558.HCSV2:comet_pkg.2.1...0',
1067
+ dpr: '1',
1068
+ __ccg: 'EXCELLENT',
1069
+ __comet_req: '15',
1070
+ locale: 'vi_VN',
1071
+ fb_dtsg: ctx.fb_dtsg,
1072
+ jazoest: ctx.jazoest,
1073
+ lsd: ctx.lsd || ctx.fb_dtsg,
1074
+ __spin_r: '1037381017',
1075
+ __spin_b: 'trunk',
1076
+ __spin_t: Math.floor(Date.now() / 1000).toString(),
1077
+ __crn: 'comet.fbweb.CometGroupDiscussionRoute',
1078
+ fb_api_caller_class: 'RelayModern',
1079
+ fb_api_req_friendly_name: 'ComposerStoryCreateMutation',
1080
+ variables: JSON.stringify(variables),
1081
+ server_timestamps: 'true',
1082
+ doc_id: '34999618373018994',
1083
+ };
1084
+
1085
+ const customHeader = {
1086
+ 'x-fb-friendly-name': 'ComposerStoryCreateMutation',
1087
+ 'x-fb-lsd': ctx.lsd || '',
1088
+ 'x-asbd-id': '359341',
1089
+ origin: 'https://www.facebook.com',
1090
+ referer: `https://www.facebook.com/groups/${groupID}?locale=vi_VN`,
1091
+ };
1092
+
1093
+ const res = await utils.post(
1094
+ 'https://www.facebook.com/api/graphql/',
1095
+ ctx.jar,
1096
+ form,
1097
+ ctx.globalOptions,
1098
+ ctx,
1099
+ customHeader,
1100
+ );
1101
+
1102
+ const data = parseResponseBody(res.body);
1103
+
1104
+ if (data?.errors) {
1105
+ throw new Error(JSON.stringify(data.errors));
1106
+ }
1107
+
1108
+ return {
1109
+ success: true,
1110
+ postID: data?.data?.story_create?.story?.id || null,
1111
+ url: data?.data?.story_create?.story?.url || null,
1112
+ data,
1113
+ };
1114
+ },
635
1115
  };
636
1116
 
637
1117
  return groupModule;
@@ -422,6 +422,24 @@ export interface GroupModule {
422
422
  keyword: string,
423
423
  options?: SearchGroupOptions,
424
424
  ): Promise<SearchGroupResult>;
425
+
426
+ /**
427
+ * Resolves a Facebook share URL to the actual group ID.
428
+ *
429
+ * Accepts various formats:
430
+ * - Full URL: `https://www.facebook.com/share/g/14bKqsywAfu/`
431
+ * - Path only: `/share/g/14bKqsywAfu/`
432
+ * - Short key: `14bKqsywAfu`
433
+ *
434
+ * @param shareUrl The share URL, path, or short key to resolve.
435
+ */
436
+ resolveShareUrl(
437
+ shareUrl: string,
438
+ ): Promise<{
439
+ groupID: string;
440
+ name: string | null;
441
+ url: string | null;
442
+ }>;
425
443
  }
426
444
 
427
445
  export interface MessageObject {