Kaynağa Gözat

fix wrong config/config rule, remove unused module

Mike L 4 yıl önce
ebeveyn
işleme
bf8abcadbf
7 değiştirilmiş dosya ile 22 ekleme ve 146 silme
  1. 0 73
      dist/gifski.js
  2. 10 6
      dist/koishi.js
  3. 1 1
      dist/main.js
  4. 1 0
      package.json
  5. 0 61
      src/gifski.ts
  6. 9 4
      src/koishi.ts
  7. 1 1
      src/main.ts

+ 0 - 73
dist/gifski.js

@@ -1,73 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const child_process_1 = require("child_process");
-const fs_1 = require("fs");
-const temp = require("temp");
-const loggers_1 = require("./loggers");
-const logger = loggers_1.getLogger('gifski');
-const sizeLimit = 10 * Math.pow(2, 20);
-const roundToEven = (n) => Math.ceil(n / 2) * 2;
-exports.default = (data, targetWidth) => __awaiter(void 0, void 0, void 0, function* () {
-    const outputFilePath = temp.path({ suffix: '.gif' });
-    temp.track();
-    try {
-        const inputFile = temp.openSync();
-        fs_1.writeSync(inputFile.fd, Buffer.from(data));
-        fs_1.closeSync(inputFile.fd);
-        logger.info(`saved video file to ${inputFile.path}, starting gif conversion...`);
-        const args = [
-            inputFile.path,
-            '-o',
-            outputFilePath,
-            '--fps',
-            '12.5',
-            '--quiet',
-            '--quality',
-            '90',
-        ];
-        if (typeof (targetWidth) === 'number') {
-            args.push('--width', roundToEven(targetWidth).toString());
-        }
-        logger.info(` gifski ${args.join(' ')}`);
-        const gifskiSpawn = child_process_1.spawn('gifski', args);
-        const gifskiResult = new Promise((resolve, reject) => {
-            const sizeChecker = setInterval(() => {
-                if (fs_1.existsSync(outputFilePath) && fs_1.statSync(outputFilePath).size > sizeLimit)
-                    gifskiSpawn.kill();
-            }, 5000);
-            gifskiSpawn.on('exit', () => {
-                clearInterval(sizeChecker);
-                if (!fs_1.existsSync(outputFilePath) || fs_1.statSync(outputFilePath).size === 0)
-                    return reject('no file was created on exit');
-                logger.info(`gif conversion succeeded, file path: ${outputFilePath}`);
-                resolve(fs_1.readFileSync(outputFilePath).buffer);
-            });
-        });
-        const stderr = [];
-        gifskiSpawn.stderr.on('data', errdata => stderr.push(errdata));
-        gifskiSpawn.stderr.on('end', () => {
-            if (stderr.length !== 0) {
-                if (!gifskiSpawn.killed)
-                    gifskiSpawn.kill();
-                throw Error(Buffer.concat(stderr).toString());
-            }
-        });
-        return yield gifskiResult;
-    }
-    catch (error) {
-        logger.error(`error converting video to gif ${error ? `message: ${error}` : ''}`);
-        throw Error('error converting video to gif');
-    }
-    finally {
-        temp.cleanup();
-    }
-});

+ 10 - 6
dist/koishi.js

@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.ellipseBase64InMessage = exports.message = void 0;
+const getPort = require("get-port");
 const koishi_1 = require("koishi");
 require("koishi-adapter-onebot");
 const command_1 = require("./command");
@@ -64,9 +65,11 @@ class default_1 {
             logger.error(`error pushing data to ${JSON.stringify(subscriber.chatID)}, reason: ${reason}`);
             throw Error(reason);
         });
-        this.initBot = () => {
+        this.initBot = () => __awaiter(this, void 0, void 0, function* () {
+            const port = yield getPort();
             this.app = new koishi_1.App({
                 type: 'onebot',
+                port,
                 server: `http://${this.botInfo.host}:${this.botInfo.port}`,
                 selfId: this.botInfo.bot_id.toString(),
                 token: this.botInfo.access_token,
@@ -162,11 +165,12 @@ count 与 since/until 并用时,取二者中实际查询结果较少者
                         }
                 }
             }));
-        };
-        this.connect = () => {
-            this.initBot();
-            this.app.start().then(() => this.bot = this.app.getBot('onebot'));
-        };
+        });
+        this.connect = () => __awaiter(this, void 0, void 0, function* () {
+            yield this.initBot();
+            yield this.app.start();
+            this.bot = this.app.getBot('onebot');
+        });
         logger.warn(`Initialized koishi on ${opt.host}:${opt.port} with access_token ${opt.access_token}`);
         this.botInfo = opt;
     }

+ 1 - 1
dist/main.js

@@ -48,7 +48,7 @@ catch (e) {
 }
 const requiredFields = [
     'twitter_consumer_key', 'twitter_consumer_secret', 'twitter_access_token_key', 'twitter_access_token_secret',
-    'cq_bot_qq', (config.mode || exampleConfig.mode) === 0 && 'playwright_ws_spec_endpoint',
+    'cq_bot_qq', ...(config.mode || exampleConfig.mode) === 0 ? ['playwright_ws_spec_endpoint'] : [],
 ];
 const warningFields = [
     'cq_http_host', 'cq_http_port', 'cq_access_token',

+ 1 - 0
package.json

@@ -32,6 +32,7 @@
   "dependencies": {
     "callable-instance": "^2.0.0",
     "command-line-usage": "^5.0.5",
+    "get-port": "^5.1.1",
     "html-entities": "^1.3.1",
     "koishi": "^3.10.0",
     "koishi-adapter-onebot": "^3.0.8",

+ 0 - 61
src/gifski.ts

@@ -1,61 +0,0 @@
-import { spawn } from 'child_process';
-import { closeSync, existsSync, readFileSync, statSync, writeSync } from 'fs';
-import * as temp from 'temp';
-
-import { getLogger } from './loggers';
-
-const logger = getLogger('gifski');
-
-const sizeLimit = 10 * 2 ** 20;
-const roundToEven = (n: number) => Math.ceil(n / 2) * 2;
-
-export default async (data: ArrayBuffer, targetWidth?: number) => {
-  const outputFilePath = temp.path({suffix: '.gif'});
-  temp.track();
-  try {
-    const inputFile = temp.openSync();
-    writeSync(inputFile.fd, Buffer.from(data));
-    closeSync(inputFile.fd);
-    logger.info(`saved video file to ${inputFile.path}, starting gif conversion...`);
-    const args = [
-      inputFile.path,
-      '-o',
-      outputFilePath,
-      '--fps',
-      '12.5',
-      '--quiet',
-      '--quality',
-      '90',
-    ];
-    if (typeof(targetWidth) === 'number') {
-      args.push('--width', roundToEven(targetWidth).toString());
-    }
-    logger.info(` gifski ${args.join(' ')}`);
-    const gifskiSpawn = spawn('gifski', args);
-    const gifskiResult = new Promise<ArrayBufferLike>((resolve, reject) => {
-      const sizeChecker = setInterval(() => {
-        if (existsSync(outputFilePath) && statSync(outputFilePath).size > sizeLimit) gifskiSpawn.kill();
-      }, 5000);
-      gifskiSpawn.on('exit', () => {
-        clearInterval(sizeChecker);
-        if (!existsSync(outputFilePath) || statSync(outputFilePath).size === 0) return reject('no file was created on exit');
-        logger.info(`gif conversion succeeded, file path: ${outputFilePath}`);
-        resolve(readFileSync(outputFilePath).buffer);
-      });
-    });
-    const stderr = [];
-    gifskiSpawn.stderr.on('data', errdata => stderr.push(errdata));
-    gifskiSpawn.stderr.on('end', () => {
-      if (stderr.length !== 0) {
-        if (!gifskiSpawn.killed) gifskiSpawn.kill();
-        throw Error(Buffer.concat(stderr).toString());
-      }
-    });
-    return await gifskiResult;
-  } catch (error) {
-    logger.error(`error converting video to gif ${error ? `message: ${error}` : ''}`);
-    throw Error('error converting video to gif');
-  } finally {
-    temp.cleanup();
-  }
-};

+ 9 - 4
src/koishi.ts

@@ -1,3 +1,4 @@
+import * as getPort from 'get-port';
 import { App, Bot, segment, Session } from 'koishi';
 import 'koishi-adapter-onebot';
 
@@ -71,9 +72,12 @@ export default class {
       throw Error(reason);
     });
 
-  private initBot = () => {
+  private initBot = async () => {
+    const port = await getPort();
+
     this.app = new App({
       type: 'onebot',
+      port,
       server: `http://${this.botInfo.host}:${this.botInfo.port}`,
       selfId: this.botInfo.bot_id.toString(),
       token: this.botInfo.access_token,
@@ -175,9 +179,10 @@ count 与 since/until 并用时,取二者中实际查询结果较少者
     });
   };
 
-  public connect = () => {
-    this.initBot();
-    this.app.start().then(() => this.bot = this.app.getBot('onebot'));
+  public connect = async () => {
+    await this.initBot();
+    await this.app.start();
+    this.bot = this.app.getBot('onebot');
   };
 
   constructor(opt: IQQProps) {

+ 1 - 1
src/main.ts

@@ -57,7 +57,7 @@ try {
 
 const requiredFields = [
   'twitter_consumer_key', 'twitter_consumer_secret', 'twitter_access_token_key', 'twitter_access_token_secret',
-  'cq_bot_qq', (config.mode || exampleConfig.mode) === 0 && 'playwright_ws_spec_endpoint',
+  'cq_bot_qq', ...(config.mode || exampleConfig.mode) === 0 ? ['playwright_ws_spec_endpoint'] : [],
 ];
 
 const warningFields = [