Mike L 4 лет назад
Родитель
Сommit
d7f969efc0
7 измененных файлов с 36 добавлено и 14 удалено
  1. 1 1
      dist/mirai.js
  2. 2 2
      dist/twitter.js
  3. 4 4
      dist/webshot.js
  4. 3 1
      package.json
  5. 2 2
      src/mirai.ts
  6. 21 2
      src/twitter.ts
  7. 3 2
      src/webshot.ts

+ 1 - 1
dist/mirai.js

@@ -20,7 +20,7 @@ const ChatTypeMap = {
     FriendMessage: "private" /* Private */,
     TempMessage: "temp" /* Temp */,
 };
-exports.MiraiMessage = message_1.default;
+exports.Message = message_1.default;
 class default_1 {
     constructor(opt) {
         this.sendTo = (subscriber, msg, timeout = -1) => (() => {

+ 2 - 2
dist/twitter.js

@@ -119,10 +119,10 @@ class default_1 {
                                     if (count > maxCount && message.type === 'Image') {
                                         if (pos === 0) {
                                             logger.warn(`${count - 1} consecutive failures sending webshot, trying plain text instead...`);
-                                            msg[pos] = mirai_1.MiraiMessage.Plain(author + text);
+                                            msg[pos] = mirai_1.Message.Plain(author + text);
                                         }
                                         else {
-                                            msg[pos] = mirai_1.MiraiMessage.Plain(`[失败的图片:${message.path}]`);
+                                            msg[pos] = mirai_1.Message.Plain(`[失败的图片:${message.path}]`);
                                         }
                                     }
                                 });

+ 4 - 4
dist/webshot.js

@@ -217,7 +217,7 @@ class Webshot extends CallableInstance {
                     });
                 }
                 if (this.mode > 0)
-                    messageChain.push(mirai_1.MiraiMessage.Plain(author + xmlEntities.decode(text)));
+                    messageChain.push(mirai_1.Message.Plain(author + xmlEntities.decode(text)));
             });
             // invoke webshot
             if (this.mode === 0) {
@@ -225,7 +225,7 @@ class Webshot extends CallableInstance {
                 promise = promise.then(() => this.renderWebshot(url, 1920, webshotDelay))
                     .then(webshotFilePath => {
                     if (webshotFilePath)
-                        messageChain.push(mirai_1.MiraiMessage.Image('', '', baseName(webshotFilePath)));
+                        messageChain.push(mirai_1.Message.Image('', '', baseName(webshotFilePath)));
                 });
             }
             // fetch extra images
@@ -233,7 +233,7 @@ class Webshot extends CallableInstance {
                 if (originTwi.extended_entities) {
                     originTwi.extended_entities.media.forEach(media => promise = promise.then(() => this.fetchImage(media.media_url_https + ':orig', `${twi.user.screen_name}-${twi.id_str}--`)
                         .then(path => {
-                        messageChain.push(mirai_1.MiraiMessage.Image('', '', baseName(path)));
+                        messageChain.push(mirai_1.Message.Image('', '', baseName(path)));
                     })));
                 }
             }
@@ -245,7 +245,7 @@ class Webshot extends CallableInstance {
                             .filter(urlObj => urlObj.indices[0] < originTwi.display_text_range[1])
                             .map(urlObj => urlObj.expanded_url);
                         if (urls.length) {
-                            messageChain.push(mirai_1.MiraiMessage.Plain(urls.join('\n')));
+                            messageChain.push(mirai_1.Message.Plain(urls.join('\n')));
                         }
                     });
                 }

+ 3 - 1
package.json

@@ -50,7 +50,9 @@
     "@types/puppeteer": "^1.5.0",
     "@types/redis": "^2.8.6",
     "@types/sharp": "^0.25.0",
+    "@types/twitter": "^1.7.0",
     "tslint": "^5.10.0",
-    "tslint-config-prettier": "^1.13.0"
+    "tslint-config-prettier": "^1.13.0",
+    "twitter-d": "^0.4.0"
   }
 }

+ 2 - 2
src/mirai.ts

@@ -1,6 +1,6 @@
 import axios from 'axios';
 import Mirai, { MessageType } from 'mirai-ts';
-import Message from 'mirai-ts/dist/message';
+import MiraiMessage from 'mirai-ts/dist/message';
 
 import command from './helper';
 import { getLogger } from './loggers';
@@ -24,7 +24,7 @@ const ChatTypeMap: Record<MessageType.ChatMessageType, ChatType> = {
 };
 
 export type MessageChain = MessageType.MessageChain;
-export const MiraiMessage = Message;
+export const Message = MiraiMessage;
 
 export default class {
 

+ 21 - 2
src/twitter.ts

@@ -1,9 +1,10 @@
 import * as fs from 'fs';
 import * as path from 'path';
 import * as Twitter from 'twitter';
+import TwitterTypes from 'twitter-d';
 
 import { getLogger } from './loggers';
-import QQBot, { MessageChain, MiraiMessage as Message } from './mirai';
+import QQBot, { Message, MessageChain } from './mirai';
 import Webshot from './webshot';
 
 interface IWorkerOption {
@@ -22,9 +23,27 @@ interface IWorkerOption {
 
 const logger = getLogger('twitter');
 
+export type FullUser = TwitterTypes.FullUser;
+export type Entities = TwitterTypes.Entities;
+export type ExtendedEntities = TwitterTypes.ExtendedEntities;
+
+interface ITweet {
+  user: FullUser;
+  entities: Entities;
+  extended_entities: ExtendedEntities;
+  full_text: string;
+  display_text_range: [number, number];
+  id: number;
+  id_str: string;
+  retweeted_status?: Tweet;
+}
+
+export type Tweet = ITweet;
+export type Tweets = ITweet[];
+
 export default class {
 
-  private client;
+  private client: Twitter;
   private lock: ILock;
   private lockfile: string;
   private workInterval: number;

+ 3 - 2
src/webshot.ts

@@ -9,7 +9,8 @@ import * as sharp from 'sharp';
 import { Stream } from 'stream';
 
 import { getLogger } from './loggers';
-import { MessageChain, MiraiMessage as Message } from './mirai';
+import { Message, MessageChain } from './mirai';
+import { Tweets } from './twitter';
 
 const writeOutTo = (path: string, data: Stream) =>
   new Promise<string>(resolve => {
@@ -206,7 +207,7 @@ class Webshot extends CallableInstance<[number], Promise<void>> {
     })
 
   public webshot(
-    tweets,
+    tweets: Tweets,
     callback: (msgs: MessageChain, text: string, author: string) => void,
     webshotDelay: number
   ): Promise<void> {