Browse Source

fix sentTweet not catching error

Mike L 3 years ago
parent
commit
5d77ee38cf
2 changed files with 22 additions and 22 deletions
  1. 9 9
      dist/twitter.js
  2. 13 13
      src/twitter.ts

+ 9 - 9
dist/twitter.js

@@ -315,7 +315,15 @@ class default_1 {
             this.redis = new redis_1.default(opt.redis);
         ScreenNameNormalizer._queryUser = this.queryUser;
         exports.sendTweet = (idOrQuery, receiver, forceRefresh) => {
-            const send = (id) => this.getTweet(id, this.sendTweets({ sourceInfo: `tweet ${id}`, reportOnSkip: true, force: forceRefresh }, receiver), forceRefresh)
+            const match = /^last(|-\d+)@([^\/?#,]+)((?:,no.*?=[^,]*)*)$/.exec(idOrQuery);
+            const query = () => this.queryTimeline({
+                username: match[2],
+                count: 1 - Number(match[1]),
+                noreps: { on: true, off: false }[match[3].replace(/.*,noreps=([^,]*).*/, '$1')],
+                norts: { on: true, off: false }[match[3].replace(/.*,norts=([^,]*).*/, '$1')],
+            }).then(tweets => tweets.slice(-1)[0].id_str);
+            (match ? query() : Promise.resolve(idOrQuery))
+                .then((id) => this.getTweet(id, this.sendTweets({ sourceInfo: `tweet ${id}`, reportOnSkip: true, force: forceRefresh }, receiver), forceRefresh))
                 .catch((err) => {
                 var _a;
                 if (((_a = err[0]) === null || _a === void 0 ? void 0 : _a.code) === 34)
@@ -326,14 +334,6 @@ class default_1 {
                 }
                 this.bot.sendTo(receiver, '找不到请求的推文,它可能已被删除。');
             });
-            const match = /^last(|-\d+)@([^\/?#,]+)((?:,no.*?=[^,]*)*)$/.exec(idOrQuery);
-            const query = () => this.queryTimeline({
-                username: match[2],
-                count: 1 - Number(match[1]),
-                noreps: { on: true, off: false }[match[3].replace(/.*,noreps=([^,]*).*/, '$1')],
-                norts: { on: true, off: false }[match[3].replace(/.*,norts=([^,]*).*/, '$1')],
-            }).then(tweets => tweets.slice(-1)[0].id_str);
-            (match ? query() : Promise.resolve(idOrQuery)).then(send);
         };
         exports.sendTimeline = ({ username, count, since, until, noreps, norts }, receiver) => {
             const countNum = Number(count) || 10;

+ 13 - 13
src/twitter.ts

@@ -142,11 +142,19 @@ export default class {
     if (opt.redis) this.redis = new RedisSvc(opt.redis);
     ScreenNameNormalizer._queryUser = this.queryUser;
     sendTweet = (idOrQuery, receiver, forceRefresh) => {
-      const send = (id: string) => this.getTweet(
-        id,
-        this.sendTweets({sourceInfo: `tweet ${id}`, reportOnSkip: true, force: forceRefresh}, receiver),
-        forceRefresh
-      )
+      const match = /^last(|-\d+)@([^\/?#,]+)((?:,no.*?=[^,]*)*)$/.exec(idOrQuery);
+      const query = () => this.queryTimeline({
+          username: match[2],
+          count: 1 - Number(match[1]),
+          noreps: {on: true, off: false}[match[3].replace(/.*,noreps=([^,]*).*/, '$1')],
+          norts: {on: true, off: false}[match[3].replace(/.*,norts=([^,]*).*/, '$1')],
+        }).then(tweets => tweets.slice(-1)[0].id_str);
+      (match ? query() : Promise.resolve(idOrQuery))
+        .then((id: string) => this.getTweet(
+          id,
+          this.sendTweets({sourceInfo: `tweet ${id}`, reportOnSkip: true, force: forceRefresh}, receiver),
+          forceRefresh
+        ))
         .catch((err: {code: number, message: string}[]) => {
           if (err[0]?.code === 34)
             return this.bot.sendTo(receiver, `找不到用户 ${match[2].replace(/^@?(.*)$/, '@$1')}。`);
@@ -156,14 +164,6 @@ export default class {
           }
           this.bot.sendTo(receiver, '找不到请求的推文,它可能已被删除。');
         });
-      const match = /^last(|-\d+)@([^\/?#,]+)((?:,no.*?=[^,]*)*)$/.exec(idOrQuery);
-      const query = () => this.queryTimeline({
-          username: match[2],
-          count: 1 - Number(match[1]),
-          noreps: {on: true, off: false}[match[3].replace(/.*,noreps=([^,]*).*/, '$1')],
-          norts: {on: true, off: false}[match[3].replace(/.*,norts=([^,]*).*/, '$1')],
-        }).then(tweets => tweets.slice(-1)[0].id_str);
-      (match ? query() : Promise.resolve(idOrQuery)).then(send);
     };
     sendTimeline = ({username, count, since, until, noreps, norts}, receiver) => {
       const countNum = Number(count) || 10;