tap
Back

instagram/messages

instagramRead-only

获取 DM 收件箱 (inbox threads: participants, last_message, timestamp)

www.instagram.com
Last 7 days
0
Last 30 days
0
All time
0
instagram/messages.js
/* @meta
{
  "name": "instagram/messages",
  "description": "获取 DM 收件箱 (inbox threads: participants, last_message, timestamp)",
  "domain": "www.instagram.com",
  "args": {},
  "capabilities": ["network"],
  "readOnly": true,
  "example": "bb-browser site instagram/messages"
}
*/

async function(args) {
  var csrftoken = document.cookie.split(';').map(function(c){return c.trim()}).find(function(c){return c.startsWith('csrftoken=')});
  if (!csrftoken) return {error: 'Not logged in', hint: '请先在浏览器中登录 Instagram', action: 'bb-browser open https://www.instagram.com/accounts/login/'};
  csrftoken = csrftoken.split('=')[1];

  var fbDtsg = null;
  try { fbDtsg = require('DTSGInitialData').token; } catch(e) {}
  if (!fbDtsg) return {error: 'No fb_dtsg token', hint: '请刷新页面后重试', action: 'bb-browser refresh'};

  var lsd = null;
  try { lsd = require('LSD').token; } catch(e) {}
  if (!lsd) try { lsd = require('LSDToken').token; } catch(e) {}

  var docId;
  ['PolarisDirectInboxMobileQuery', 'PolarisDirectInboxQuery'].forEach(function(name) {
    ['', '.graphql'].forEach(function(suffix) {
      try { var mod = require(name + suffix); if (mod && mod.params && mod.params.id && !docId) docId = mod.params.id; } catch(e) {}
    });
  });
  if (!docId) return {error: 'Query module not loaded', hint: '请先打开 DM 页面', action: 'bb-browser open https://www.instagram.com/direct/inbox/'};

  var deviceId = localStorage.getItem('chatd-deviceid') || crypto.randomUUID();

  var variables = {
    device_id_for_iris_subscription: deviceId,
    __relay_internal__pv__IGDIsProfessionalAccountGKrelayprovider: false,
    __relay_internal__pv__IGDPinnedThreadsRenderEnabledGKrelayprovider: true,
    __relay_internal__pv__IGDMaxUnreadMessagesCountrelayprovider: 5,
    __relay_internal__pv__PolarisAIGMAccountLabelEnabledrelayprovider: false,
    __relay_internal__pv__IGDThreadListActionsEnabledGKrelayprovider: true
  };

  var body = new URLSearchParams();
  body.append('__d', 'www');
  body.append('__user', '0');
  body.append('__a', '1');
  body.append('__comet_req', '7');
  body.append('fb_dtsg', fbDtsg);
  if (lsd) body.append('lsd', lsd);
  body.append('fb_api_caller_class', 'RelayModern');
  body.append('fb_api_req_friendly_name', docId === '26472232189128878' ? 'PolarisDirectInboxQuery' : 'PolarisDirectInboxMobileQuery');
  body.append('server_timestamps', 'true');
  body.append('variables', JSON.stringify(variables));
  body.append('doc_id', docId);

  var headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
    'X-CSRFToken': csrftoken,
    'X-IG-App-ID': '936619743392459',
    'X-Requested-With': 'XMLHttpRequest'
  };
  if (lsd) headers['X-FB-LSD'] = lsd;

  var resp = await fetch('/api/graphql', {
    method: 'POST', credentials: 'include', headers: headers, body: body.toString()
  });

  if (!resp.ok) return {error: 'HTTP ' + resp.status, hint: '请求失败'};

  var d = await resp.json();
  var inbox = d.data && d.data.get_slide_mailbox_for_iris_subscription;
  if (!inbox || !inbox.threads_by_folder) return {error: 'Inbox empty or not available', hint: '没有 DM 消息或需要先打开 DM 页面'};

  var edges = inbox.threads_by_folder.edges || [];
  var threads = edges.map(function(e) {
    var wrapper = e.node || {};
    var t = wrapper.as_ig_direct_thread || wrapper;

    var users = (t.users || []).map(function(u) {
      return { pk: u.id, username: u.username, full_name: u.full_name };
    });

    var lastMsg = null;
    var msgEdges = (t.slide_messages && t.slide_messages.edges) || [];
    if (msgEdges.length > 0) {
      var m = msgEdges[0].node || {};
      lastMsg = { text: m.text_body || null, sender: m.sender && m.sender.name, timestamp_ms: m.timestamp_ms, content_type: m.content_type };
    }

    return {
      thread_key: t.thread_key,
      is_group: t.is_group || false,
      users: users,
      last_message: lastMsg,
      last_activity_ms: t.last_activity_timestamp_ms
    };
  });

  return { thread_count: threads.length, threads: threads };
}
Updated May 23, 2026Created May 23, 2026SHA-256: 74f9d23730bb