Jelajahi Sumber

query: cap body to 50 chars; fix media detection

Mike L 4 tahun lalu
induk
melakukan
2478347be6
2 mengubah file dengan 17 tambahan dan 17 penghapusan
  1. 7 4
      dist/twitter.js
  2. 10 13
      src/twitter.ts

+ 7 - 4
dist/twitter.js

@@ -108,9 +108,11 @@ class default_1 {
                 include_rts: !(norts !== null && norts !== void 0 ? norts : false),
                 since_id: since,
                 max_id: until,
+                tweet_mode: 'extended',
             }, tweets = []) => this.client.get('statuses/user_timeline', config)
                 .then((newTweets) => {
                 if (newTweets.length) {
+                    logger.debug(`fetched tweets: ${JSON.stringify(newTweets)}`);
                     config.max_id = utils_1.BigNumOps.plus('-1', newTweets[newTweets.length - 1].id_str);
                     logger.info(`timeline query of ${username} yielded ${newTweets.length} new tweets, next query will start at offset ${config.max_id}`);
                     tweets.push(...newTweets.filter(tweet => tweet.extended_entities));
@@ -329,14 +331,15 @@ class default_1 {
 编号:${tweet.id_str}
 时间:${tweet.created_at}
 媒体:${tweet.extended_entities ? '有' : '无'}
-正文:\n${tweet.text}`))
+正文:\n${tweet.full_text.replace(/^([\s\S\n]{50})[\s\S\n]+( https:\/\/t.co\/.*)$/, '$1…$2')}`))
                 .concat(this.bot.sendTo(receiver, tweets.length ?
                 '时间线查询完毕,使用 /twitterpic_view <编号> 查看媒体推文详细内容。' :
                 '时间线查询完毕,没有找到符合条件的媒体推文。'))))
                 .catch((err) => {
-                if (err[0].code !== 34) {
-                    logger.warn(`error retrieving timeline: ${err[0].message}`);
-                    return this.bot.sendTo(receiver, `获取时间线时出现错误:${err[0].message}`);
+                var _a, _b, _c;
+                if (((_a = err[0]) === null || _a === void 0 ? void 0 : _a.code) !== 34) {
+                    logger.warn(`error retrieving timeline: ${((_b = err[0]) === null || _b === void 0 ? void 0 : _b.message) || err}`);
+                    return this.bot.sendTo(receiver, `获取时间线时出现错误:${((_c = err[0]) === null || _c === void 0 ? void 0 : _c.message) || err}`);
                 }
                 this.bot.sendTo(receiver, `找不到用户 ${username.replace(/^@?(.*)$/, '@$1')}。`);
             });

+ 10 - 13
src/twitter.ts

@@ -108,11 +108,6 @@ interface ITweet extends TwitterTypes.Status {
   retweeted_status?: Tweet;
 }
 
-interface IFoldedTweet extends TwitterTypes.Status {
-  text: string;
-  full_text: undefined;
-}
-
 export type Tweet = ITweet;
 export type Tweets = ITweet[];
 
@@ -166,7 +161,7 @@ export default class {
 编号:${tweet.id_str}
 时间:${tweet.created_at}
 媒体:${tweet.extended_entities ? '有' : '无'}
-正文:\n${tweet.text}`
+正文:\n${tweet.full_text.replace(/^([\s\S\n]{50})[\s\S\n]+( https:\/\/t.co\/.*)$/, '$1…$2')}`
         ))
         .concat(this.bot.sendTo(receiver, tweets.length ?
           '时间线查询完毕,使用 /twitterpic_view <编号> 查看媒体推文详细内容。' :
@@ -174,9 +169,9 @@ export default class {
         ))
       ))
       .catch((err: {code: number, message: string}[]) => {
-        if (err[0].code !== 34) {
-          logger.warn(`error retrieving timeline: ${err[0].message}`);
-          return this.bot.sendTo(receiver, `获取时间线时出现错误:${err[0].message}`);
+        if (err[0]?.code !== 34) {
+          logger.warn(`error retrieving timeline: ${err[0]?.message || err}`);
+          return this.bot.sendTo(receiver, `获取时间线时出现错误:${err[0]?.message || err}`);
         }
         this.bot.sendTo(receiver, `找不到用户 ${username.replace(/^@?(.*)$/, '@$1')}。`);
       });
@@ -202,7 +197,7 @@ export default class {
     const until = () =>
       BigNumOps.min(maxID, BigNumOps.plus(conf.since, String(7 * 24 * 3600 * 1000 * 2 ** 22)));
     conf.until = until();
-    const promise = (tweets: IFoldedTweet[]): Promise<IFoldedTweet[]> =>
+    const promise = (tweets: ITweet[]): Promise<ITweet[]> =>
       this.queryTimeline(conf).then(newTweets => {
         tweets = newTweets.concat(tweets);
         conf.since = conf.until;
@@ -238,12 +233,14 @@ export default class {
         include_rts: !(norts ?? false),
         since_id: since,
         max_id: until,
+        tweet_mode: 'extended',
       },
-      tweets: IFoldedTweet[] = []
-    ): Promise<IFoldedTweet[]> =>
+      tweets: ITweet[] = []
+    ): Promise<ITweet[]> =>
       this.client.get('statuses/user_timeline', config)
-        .then((newTweets: IFoldedTweet[]) => {
+        .then((newTweets: ITweet[]) => {
           if (newTweets.length) {
+            logger.debug(`fetched tweets: ${JSON.stringify(newTweets)}`);
             config.max_id = BigNumOps.plus('-1', newTweets[newTweets.length - 1].id_str);
             logger.info(`timeline query of ${username} yielded ${
               newTweets.length