Prechádzať zdrojové kódy

add another case for triggering re-login

Mike L 3 rokov pred
rodič
commit
f2a64b8b28
2 zmenil súbory, kde vykonal 20 pridanie a 5 odobranie
  1. 10 2
      dist/twitter.js
  2. 10 3
      src/twitter.ts

+ 10 - 2
dist/twitter.js

@@ -280,7 +280,7 @@ class default_1 {
         };
         this.queryUser = (username) => this.client.user.searchExact(username)
             .catch((error) => {
-            if (error instanceof instagram_private_api_1.IgLoginRequiredError) {
+            if (error instanceof instagram_private_api_1.IgLoginRequiredError || error instanceof instagram_private_api_1.IgCookieNotFoundError) {
                 logger.warn('login required, logging in again...');
                 return this.session.login().then(() => this.client.user.searchExact(username));
             }
@@ -485,7 +485,15 @@ class default_1 {
                 }
                 lazyMedia.item = () => Promise.resolve(mediaItem);
                 this.workOnMedia([lazyMedia], this.sendMedia(`instagram media ${segmentId}`, receiver));
-            }).catch((err) => { this.bot.sendTo(receiver, parseMediaError(err)); });
+            }).catch((err) => {
+                this.bot.sendTo(receiver, parseMediaError(err));
+                if (err instanceof instagram_private_api_1.IgLoginRequiredError || err instanceof instagram_private_api_1.IgCookieNotFoundError) {
+                    logger.warn('login required, awaiting login...');
+                    this.bot.sendTo(receiver, '等待登陆中,稍后会处理请求,请稍候……');
+                    return this.session.login().then(() => exports.sendPost(segmentId, receiver));
+                }
+                ;
+            });
         };
     }
     get isInactiveTime() {

+ 10 - 3
src/twitter.ts

@@ -11,7 +11,7 @@ import {
 } from 'instagram-id-to-url-segment';
 import {
   IgApiClient,
-  IgClientError, IgExactUserNotFoundError, IgLoginRequiredError, IgLoginTwoFactorRequiredError, IgResponseError,
+  IgClientError, IgCookieNotFoundError, IgExactUserNotFoundError, IgLoginRequiredError, IgLoginTwoFactorRequiredError, IgResponseError,
   MediaInfoResponseItemsItem, UserFeedResponseItemsItem
 } from 'instagram-private-api';
 import { SocksProxyAgent } from 'socks-proxy-agent';
@@ -386,7 +386,14 @@ export default class {
         }
         lazyMedia.item = () => Promise.resolve(mediaItem);
         this.workOnMedia([lazyMedia], this.sendMedia(`instagram media ${segmentId}`, receiver));
-      }).catch((err: IgClientError) => { this.bot.sendTo(receiver, parseMediaError(err)); });
+      }).catch((err: IgClientError) => {
+        this.bot.sendTo(receiver, parseMediaError(err));
+        if (err instanceof IgLoginRequiredError || err instanceof IgCookieNotFoundError) {
+          logger.warn('login required, awaiting login...');
+          this.bot.sendTo(receiver, '等待登陆中,稍后会处理请求,请稍候……');
+          return this.session.login().then(() => sendPost(segmentId, receiver));
+        };
+      });
     };
   }
 
@@ -486,7 +493,7 @@ export default class {
 
   public queryUser = (username: string) => this.client.user.searchExact(username)
     .catch((error: IgClientError) => {
-      if (error instanceof IgLoginRequiredError) {
+      if (error instanceof IgLoginRequiredError || error instanceof IgCookieNotFoundError) {
         logger.warn('login required, logging in again...');
         return this.session.login().then(() => this.client.user.searchExact(username));
       } else throw error;