소스 검색

handle relogin

Mike L 4 년 전
부모
커밋
baf131f136
2개의 변경된 파일18개의 추가작업 그리고 1개의 파일을 삭제
  1. 9 0
      dist/twitter.js
  2. 9 1
      src/twitter.ts

+ 9 - 0
dist/twitter.js

@@ -191,6 +191,10 @@ class default_1 {
                     if (error instanceof instagram_private_api_1.IgNetworkError) {
                         logger.warn(`error on fetching stories for all: ${JSON.stringify(error.cause)}`);
                     }
+                    else if (error instanceof instagram_private_api_1.IgLoginRequiredError) {
+                        logger.warn('login required, logging in again...');
+                        this.session.login().then(this.workForAll);
+                    }
                     else {
                         logger.error(`unhandled error on fetching media for all: ${error}`);
                     }
@@ -286,6 +290,7 @@ class default_1 {
                 }
                 return this.client.feed.reelsMedia({ userIds: [userId] }).items()
                     .then(storyItems => {
+                    storyItems = storyItems.map(story => (Object.assign(Object.assign({}, story), { user: this.cache[userName].user })));
                     storyItems.forEach(item => {
                         if (!(item.pk in this.cache[userName].stories)) {
                             this.cache[userName].stories[item.pk] = item;
@@ -302,6 +307,10 @@ class default_1 {
                     logger.warn(`error on fetching stories for ${rawUserName}: ${JSON.stringify(error.cause)}`);
                     this.bot.sendTo(receiver, `获取 Fleets 时出现错误:原因: ${error.cause}`);
                 }
+                else if (error instanceof instagram_private_api_1.IgLoginRequiredError) {
+                    logger.warn('login required, logging in again...');
+                    this.session.login().then(() => exports.sendAllStories(rawUserName, receiver));
+                }
                 else {
                     logger.error(`unhandled error on fetching media for ${rawUserName}: ${error}`);
                     this.bot.sendTo(receiver, `获取 Fleets 时发生未知错误: ${error}`);

+ 9 - 1
src/twitter.ts

@@ -3,6 +3,7 @@ import * as path from 'path';
 import {
   IgApiClient,
   IgClientError, IgExactUserNotFoundError,
+  IgLoginRequiredError,
   IgNetworkError,
   ReelsMediaFeedResponseItem, UserFeedResponseUser
 } from 'instagram-private-api';
@@ -187,6 +188,7 @@ export default class {
           }
           return this.client.feed.reelsMedia({userIds: [userId]}).items()
             .then(storyItems => {
+              storyItems = storyItems.map(story => ({...story, user: this.cache[userName].user}));
               storyItems.forEach(item => {
                 if (!(item.pk in this.cache[userName].stories)) {
                   this.cache[userName].stories[item.pk] = item;
@@ -200,7 +202,10 @@ export default class {
         .catch((error: IgClientError & Partial<RequestError>) => {
           if (error instanceof IgNetworkError) {
             logger.warn(`error on fetching stories for ${rawUserName}: ${JSON.stringify(error.cause)}`);
-            this.bot.sendTo(receiver, `获取 Fleets 时出现错误:原因: ${error.cause}`); 
+            this.bot.sendTo(receiver, `获取 Fleets 时出现错误:原因: ${error.cause}`);
+          } else if (error instanceof IgLoginRequiredError) {
+            logger.warn('login required, logging in again...');
+            this.session.login().then(() => sendAllStories(rawUserName, receiver));
           } else {
             logger.error(`unhandled error on fetching media for ${rawUserName}: ${error}`);
             this.bot.sendTo(receiver, `获取 Fleets 时发生未知错误: ${error}`); 
@@ -290,6 +295,9 @@ export default class {
           .catch((error: IgClientError & Partial<RequestError>) => {
             if (error instanceof IgNetworkError) {
               logger.warn(`error on fetching stories for all: ${JSON.stringify(error.cause)}`);
+            } else if (error instanceof IgLoginRequiredError) {
+              logger.warn('login required, logging in again...');
+              this.session.login().then(this.workForAll);
             } else {
               logger.error(`unhandled error on fetching media for all: ${error}`);
             }