Explorar o código

fix client re-login

Mike L %!s(int64=3) %!d(string=hai) anos
pai
achega
fc19a68126
Modificáronse 2 ficheiros con 30 adicións e 0 borrados
  1. 16 0
      dist/twitter.js
  2. 14 0
      src/twitter.ts

+ 16 - 0
dist/twitter.js

@@ -188,6 +188,14 @@ class default_1 {
                 return Promise.resolve(`${username}:${this.cache[username].user.pk}`);
             }
             return this.client.user.searchExact(username)
+                .catch((error) => {
+                if (error instanceof instagram_private_api_1.IgLoginRequiredError) {
+                    logger.warn('login required, logging in again...');
+                    return this.session.login().then(() => this.client.user.searchExact(username));
+                }
+                else
+                    throw error;
+            })
                 .then(user => {
                 logger.info(`initialized cache item for user ${user.full_name} (@${username})`);
                 this.cache[user.username] = { user, stories: {}, pullOrder: 0 };
@@ -252,6 +260,10 @@ class default_1 {
             })
                 .catch((error) => {
                 if (error instanceof instagram_private_api_1.IgNetworkError) {
+                    if (error.cause.message === "Unexpected '<'") {
+                        logger.warn('login required, logging in again...');
+                        return this.session.login().then(this.workForAll);
+                    }
                     logger.warn(`error while fetching stories for all: ${JSON.stringify(error.cause)}`);
                 }
                 else if (error instanceof instagram_private_api_1.IgLoginRequiredError) {
@@ -406,6 +418,10 @@ class default_1 {
                     this.bot.sendTo(receiver, `找不到用户 ${rawUserName.replace(/^@?(.*)$/, '@$1')}。`);
                 }
                 if (error instanceof instagram_private_api_1.IgNetworkError) {
+                    if (error.cause.message === "Unexpected '<'") {
+                        logger.warn('login required, logging in again...');
+                        return this.session.login().then(() => exports.sendAllStories(rawUserName, receiver, startIndex, count));
+                    }
                     logger.warn(`error while fetching stories for ${rawUserName}: ${JSON.stringify(error.cause)}`);
                     this.bot.sendTo(receiver, `获取 Stories 时出现错误:原因: ${error.cause}`);
                 }

+ 14 - 0
src/twitter.ts

@@ -280,6 +280,10 @@ export default class {
             this.bot.sendTo(receiver, `找不到用户 ${rawUserName.replace(/^@?(.*)$/, '@$1')}。`);
           }
           if (error instanceof IgNetworkError) {
+            if ((error.cause as Error).message === "Unexpected '<'") {
+              logger.warn('login required, logging in again...');
+              return this.session.login().then(() => sendAllStories(rawUserName, receiver, startIndex, count));
+            }
             logger.warn(`error while fetching stories for ${rawUserName}: ${JSON.stringify(error.cause)}`);
             this.bot.sendTo(receiver, `获取 Stories 时出现错误:原因: ${error.cause}`);
           } else if (error instanceof IgLoginRequiredError) {
@@ -314,6 +318,12 @@ export default class {
       return Promise.resolve(`${username}:${this.cache[username].user.pk}`);
     }
     return this.client.user.searchExact(username)
+      .catch((error: IgClientError) => {
+        if (error instanceof IgLoginRequiredError) {
+          logger.warn('login required, logging in again...');
+          return this.session.login().then(() => this.client.user.searchExact(username));
+        } else throw error;
+      })
       .then(user => {
         logger.info(`initialized cache item for user ${user.full_name} (@${username})`);
         this.cache[user.username] = {user, stories: {}, pullOrder: 0};
@@ -412,6 +422,10 @@ export default class {
       })
       .catch((error: IgClientError & Partial<RequestError>) => {
         if (error instanceof IgNetworkError) {
+          if ((error.cause as Error).message === "Unexpected '<'") {
+            logger.warn('login required, logging in again...');
+            return this.session.login().then(this.workForAll);
+          }
           logger.warn(`error while fetching stories for all: ${JSON.stringify(error.cause)}`);
         } else if (error instanceof IgLoginRequiredError) {
           logger.warn('login required, logging in again...');