Compare commits

...

4 Commits

Author SHA1 Message Date
Nofated095 068b61bf63 update docker compose command 2023-07-01 17:45:32 +08:00
Nofated095 21055904f3 Merge branch 'rainbowcat' of https://github.com/Clansty/Q2TG into rainbowcat 2023-07-01 17:43:55 +08:00
Clansty fb234caa71 使用最新 main 分支 2023-06-30 19:42:33 +08:00
Clansty a8a9fc8ab0 将 oicq 替换为 icqq 2023-06-30 19:26:45 +08:00
27 changed files with 194 additions and 144 deletions

View File

@ -15,7 +15,7 @@ QQ 群与 Telegram 群相互转发的 bot但是去除了 _UserBot_ 模式,
请看 [Wiki](https://github.com/Clansty/Q2TG/wiki/%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2),与上游相同。
请注意修改 [`docker-compose.yaml`](https://raw.githubusercontent.com/Nofated095/Q2TG/rainbowcat/docker-compose.yaml),启动命令 `docker-compose up -d`。
请注意修改 [`docker-compose.yaml`](https://raw.githubusercontent.com/Nofated095/Q2TG/rainbowcat/docker-compose.yaml),启动命令 `docker compose up -d`。
如果你事先部署过上游的 Q2TG 实例,建议通过 `docker stop main_q2tg` 停止服务。你可以直接修改原先的 `docker-compose.yaml`_services - q2tg - image_`ghcr.io/nofated095/q2tg:rainbowcat`

View File

@ -35,10 +35,10 @@
"eviltransform": "^0.2.2",
"file-type": "^17.1.4",
"fluent-ffmpeg": "^2.1.2",
"icqq": "https://files.catbox.moe/03ktyz.tgz",
"lodash": "^4.17.21",
"log4js": "^6.6.1",
"nodejs-base64": "^2.0.0",
"oicq": "https://0w.al/RNnS.tgz",
"prompts": "^2.4.2",
"quote-api": "https://github.com/Clansty/quote-api/archive/7d9b4c56ab1e9f3cdf1cd7e108ec25821d89ad70.tar.gz",
"sharp": "^0.31.3",

View File

@ -53,6 +53,7 @@ model QqBot {
password String @default("")
platform Int @default(0)
Instance Instance[]
signApi String?
}
model Message {

View File

@ -1,23 +1,27 @@
import {
Client,
DiscussMessageEvent,
DiscussMessageEvent, Forwardable,
Friend,
Group,
GroupMessageEvent,
LogLevel,
Platform,
PrivateMessageEvent,
} from 'oicq';
Platform, PrivateMessage,
PrivateMessageEvent, XmlElem,
} from 'icqq';
import Buffer from 'buffer';
import { execSync } from 'child_process';
import random from '../utils/random';
import fs from 'fs';
import fsP from 'fs/promises';
import { Config } from 'oicq/lib/client';
import { Config } from 'icqq/lib/client';
import dataPath from '../helpers/dataPath';
import os from 'os';
import { Converter, Image, rand2uuid } from 'icqq/lib/message';
import { randomBytes } from 'crypto';
import { escapeXml, gzip, timestamp } from 'icqq/lib/common';
import { pb } from 'icqq/lib/core';
const LOG_LEVEL: LogLevel = 'warn';
const LOG_LEVEL: LogLevel = 'info';
type MessageHandler = (event: PrivateMessageEvent | GroupMessageEvent) => Promise<boolean | void>
@ -26,6 +30,7 @@ interface CreateOicqParams {
uin: number;
password: string;
platform: Platform;
signApi?: string;
// 当需要验证手机时调用此方法,应该返回收到的手机验证码
onVerifyDevice: (phone: string) => Promise<string>;
// 当滑块时调用此方法,返回 ticker也可以返回假值改用扫码登录
@ -39,7 +44,7 @@ export default class OicqClient extends Client {
private readonly onMessageHandlers: Array<MessageHandler> = [];
private constructor(uin: number, public readonly id: number, conf?: Config) {
super(uin, conf);
super(conf);
}
private static existedBots = {} as { [id: number]: OicqClient };
@ -49,7 +54,7 @@ export default class OicqClient extends Client {
return Promise.resolve(this.existedBots[params.id]);
}
return new Promise<OicqClient>(async (resolve, reject) => {
async function loginDeviceHandler({ phone }: { url: string, phone: string }) {
const loginDeviceHandler = async ({ phone }: { url: string, phone: string }) => {
client.sendSmsCode();
const code = await params.onVerifyDevice(phone);
if (code === 'qrsubmit') {
@ -58,9 +63,9 @@ export default class OicqClient extends Client {
else {
client.submitSmsCode(code);
}
}
};
async function loginSliderHandler({ url }: { url: string }) {
const loginSliderHandler = async ({ url }: { url: string }) => {
const res = await params.onVerifySlider(url);
if (res) {
client.submitSlider(res);
@ -68,28 +73,28 @@ export default class OicqClient extends Client {
else {
client.login();
}
}
};
async function loginQrCodeHandler({ image }: { image: Buffer }) {
const loginQrCodeHandler = async ({ image }: { image: Buffer }) => {
await params.onQrCode(image);
client.qrcodeLogin();
}
};
function loginErrorHandler({ message }: { code: number; message: string }) {
const loginErrorHandler = ({ message }: { code: number; message: string }) => {
reject(message);
}
};
function successLoginHandler() {
client.off('system.login.device', loginDeviceHandler)
.off('system.login.slider', loginSliderHandler)
.off('system.login.qrcode', loginQrCodeHandler)
.off('system.login.error', loginErrorHandler)
.off('system.online', successLoginHandler)
.on('message', client.onMessage);
const successLoginHandler = () => {
client.offTrap('system.login.device', loginDeviceHandler);
client.offTrap('system.login.slider', loginSliderHandler);
client.offTrap('system.login.qrcode', loginQrCodeHandler);
client.offTrap('system.login.error', loginErrorHandler);
client.offTrap('system.online', successLoginHandler);
client.trap('message', client.onMessage);
resolve(client);
}
};
if (!fs.existsSync(dataPath(`${params.uin}/device-${params.uin}.json`))) {
if (!fs.existsSync(dataPath(`${params.uin}/device.json`))) {
await fsP.mkdir(dataPath(params.uin.toString()), { recursive: true });
const device = {
@ -109,24 +114,25 @@ export default class OicqClient extends Client {
imei: random.imei(),
};
await fsP.writeFile(dataPath(`${params.uin}/device-${params.uin}.json`), JSON.stringify(device, null, 0), 'utf-8');
await fsP.writeFile(dataPath(`${params.uin}/device.json`), JSON.stringify(device, null, 0), 'utf-8');
}
const client = new this(params.uin, params.id, {
platform: params.platform,
data_dir: dataPath(),
data_dir: dataPath(params.uin.toString()),
log_level: LOG_LEVEL,
ffmpeg_path: process.env.FFMPEG_PATH,
ffprobe_path: process.env.FFPROBE_PATH,
})
.on('system.login.device', loginDeviceHandler)
.on('system.login.slider', loginSliderHandler)
.on('system.login.qrcode', loginQrCodeHandler)
.on('system.login.error', loginErrorHandler)
.on('system.online', successLoginHandler);
sign_api_addr: params.signApi,
});
client.on('system.login.device', loginDeviceHandler);
client.on('system.login.slider', loginSliderHandler);
client.on('system.login.qrcode', loginQrCodeHandler);
client.on('system.login.error', loginErrorHandler);
client.on('system.online', successLoginHandler);
this.existedBots[params.id] = client;
client.login(params.password);
client.login(params.uin, params.password);
});
}
@ -155,4 +161,71 @@ export default class OicqClient extends Client {
return this.pickGroup(-roomId);
}
}
public async makeForwardMsgSelf(msglist: Forwardable[] | Forwardable, dm?: boolean): Promise<{
resid: string,
tSum: number
}> {
if (!Array.isArray(msglist))
msglist = [msglist];
const nodes = [];
const makers: Converter[] = [];
let imgs: Image[] = [];
let cnt = 0;
for (const fake of msglist) {
const maker = new Converter(fake.message, { dm, cachedir: this.config.data_dir });
makers.push(maker);
const seq = randomBytes(2).readInt16BE();
const rand = randomBytes(4).readInt32BE();
let nickname = String(fake.nickname || fake.user_id);
if (!nickname && fake instanceof PrivateMessage)
nickname = this.fl.get(fake.user_id)?.nickname || this.sl.get(fake.user_id)?.nickname || nickname;
if (cnt < 4) {
cnt++;
}
nodes.push({
1: {
1: fake.user_id,
2: this.uin,
3: dm ? 166 : 82,
4: dm ? 11 : null,
5: seq,
6: fake.time || timestamp(),
7: rand2uuid(rand),
9: dm ? null : {
1: this.uin,
4: nickname,
},
14: dm ? nickname : null,
20: {
1: 0,
2: rand,
},
},
3: {
1: maker.rich,
},
});
}
for (const maker of makers)
imgs = [...imgs, ...maker.imgs];
const contact = (dm ? this.pickFriend : this.pickGroup)(this.uin);
if (imgs.length)
await contact.uploadImages(imgs);
const compressed = await gzip(pb.encode({
1: nodes,
2: {
1: 'MultiMsg',
2: {
1: nodes,
},
},
}));
const _uploadMultiMsg = Reflect.get(contact, '_uploadMultiMsg') as Function;
const resid = await _uploadMultiMsg.apply(contact, compressed);
return {
tSum: nodes.length,
resid,
};
}
}

View File

@ -9,7 +9,7 @@ import {
MemberDecreaseEvent,
MemberIncreaseEvent,
PrivateMessageEvent,
} from 'oicq';
} from 'icqq';
import Instance from '../models/Instance';
import { getLogger, Logger } from 'log4js';

View File

@ -2,7 +2,7 @@ import DeleteMessageService from '../services/DeleteMessageService';
import Telegram from '../client/Telegram';
import OicqClient from '../client/OicqClient';
import { Api } from 'telegram';
import { FriendRecallEvent, GroupRecallEvent } from 'oicq';
import { FriendRecallEvent, GroupRecallEvent } from 'icqq';
import Instance from '../models/Instance';
export default class DeleteMessageController {

View File

@ -8,7 +8,7 @@ import {
GroupPokeEvent,
MemberIncreaseEvent,
PrivateMessageEvent,
} from 'oicq';
} from 'icqq';
import db from '../models/db';
import { Api } from 'telegram';
import { getLogger, Logger } from 'log4js';

View File

@ -1,7 +1,7 @@
import Instance from '../models/Instance';
import Telegram from '../client/Telegram';
import OicqClient from '../client/OicqClient';
import { AtElem, Group, GroupMessageEvent, PrivateMessageEvent, Sendable } from 'oicq';
import { AtElem, Group, GroupMessageEvent, PrivateMessageEvent, Sendable } from 'icqq';
import { Pair } from '../models/Pair';
import { Api } from 'telegram';
import db from '../models/db';

View File

@ -4,7 +4,7 @@ import Instance from '../models/Instance';
import Telegram from '../client/Telegram';
import OicqClient from '../client/OicqClient';
import { Api } from 'telegram';
import { Group } from 'oicq';
import { Group } from 'icqq';
import RecoverMessageHelper from '../helpers/RecoverMessageHelper';
export default class InChatCommandsController {

View File

@ -2,7 +2,7 @@ import Instance from '../models/Instance';
import Telegram from '../client/Telegram';
import OicqClient from '../client/OicqClient';
import { getLogger, Logger } from 'log4js';
import { GroupMessageEvent, PrivateMessageEvent } from 'oicq';
import { GroupMessageEvent, PrivateMessageEvent } from 'icqq';
import { Api } from 'telegram';
import quotly from 'quote-api/methods/generate.js';
import { CustomFile } from 'telegram/client/uploads';

View File

@ -2,7 +2,7 @@ import { getLogger, Logger } from 'log4js';
import Instance from '../models/Instance';
import Telegram from '../client/Telegram';
import OicqClient from '../client/OicqClient';
import { FriendRequestEvent, GroupInviteEvent } from 'oicq';
import { FriendRequestEvent, GroupInviteEvent } from 'icqq';
import { getAvatar } from '../utils/urls';
import { CustomFile } from 'telegram/client/uploads';
import { Button } from 'telegram/tl/custom/button';

View File

@ -3,7 +3,7 @@ import Telegram from '../client/Telegram';
import OicqClient from '../client/OicqClient';
import { Pair } from '../models/Pair';
import { Api } from 'telegram';
import { GroupMessage, PrivateMessage } from 'oicq';
import { GroupMessage, PrivateMessage } from 'icqq';
import db from '../models/db';
import { format } from 'date-and-time';
import lottie from '../constants/lottie';

View File

@ -3,7 +3,7 @@ import { CustomFile } from 'telegram/client/uploads';
import { base64decode } from 'nodejs-base64';
import { getLogger } from 'log4js';
import { Entity } from 'telegram/define';
import { ForwardMessage } from 'oicq';
import { ForwardMessage } from 'icqq';
import { Api } from 'telegram';
const log = getLogger('ForwardHelper');

View File

@ -1,4 +1,4 @@
import { Platform } from 'oicq';
import { Platform } from 'icqq';
export default {
convertTextToPlatform(text: string): Platform {

View File

@ -1,4 +1,4 @@
import { Friend, Group } from 'oicq';
import { Friend, Group } from 'icqq';
import TelegramChat from '../client/TelegramChat';
import OicqClient from '../client/OicqClient';
import Telegram from '../client/Telegram';

View File

@ -120,6 +120,7 @@ export default class Instance {
uin: Number(this.qq.uin),
password: this.qq.password,
platform: this.qq.platform,
signApi: this.qq.signApi,
onQrCode: async (file) => {
await this.ownerChat.sendMessage({
message: '请使用已登录这个账号的手机 QQ 扫描这个二维码授权',

View File

@ -1,5 +1,5 @@
import { getLogger } from 'log4js';
import { Friend, Group } from 'oicq';
import { Friend, Group } from 'icqq';
import TelegramChat from '../client/TelegramChat';
import getAboutText from '../utils/getAboutText';
import { md5 } from '../utils/hashing';

View File

@ -1,5 +1,5 @@
import Telegram from '../client/Telegram';
import { Friend, FriendInfo, Group, GroupInfo } from 'oicq';
import { Friend, FriendInfo, Group, GroupInfo } from 'icqq';
import { Button } from 'telegram/tl/custom/button';
import { getLogger, Logger } from 'log4js';
import { getAvatar } from '../utils/urls';

View File

@ -2,7 +2,7 @@ import Telegram from '../client/Telegram';
import { getLogger, Logger } from 'log4js';
import { Api } from 'telegram';
import db from '../models/db';
import { Friend, FriendRecallEvent, Group, GroupRecallEvent } from 'oicq';
import { Friend, FriendRecallEvent, Group, GroupRecallEvent } from 'icqq';
import Instance from '../models/Instance';
import { Pair } from '../models/Pair';
import { consumer } from '../utils/highLevelFunces';

View File

@ -10,7 +10,7 @@ import {
Quotable,
segment,
Sendable,
} from 'oicq';
} from 'icqq';
import { fetchFile, getBigFaceUrl, getImageUrlByMd5 } from '../utils/urls';
import { ButtonLike, FileLike } from 'telegram/define';
import { getLogger, Logger } from 'log4js';
@ -38,7 +38,7 @@ import { QQMessageSent } from '../types/definitions';
import ZincSearch from 'zincsearch-node';
import { speech as AipSpeechClient } from 'baidu-aip-sdk';
import random from '../utils/random';
import { escapeXml } from 'oicq/lib/common';
import { escapeXml } from 'icqq/lib/common';
const NOT_CHAINABLE_ELEMENTS = ['flash', 'record', 'video', 'location', 'share', 'json', 'xml', 'poke'];
@ -394,7 +394,7 @@ export default class ForwardService {
message: message.message,
});
}
const fake = await pair.qq.makeForwardMsg(msgList);
const fake = await this.oicq.makeForwardMsgSelf(msgList);
chain.push({
type: 'xml',
id: 60,

View File

@ -8,7 +8,7 @@ import { Pair } from '../models/Pair';
import { CustomFile } from 'telegram/client/uploads';
import { getAvatar } from '../utils/urls';
import db from '../models/db';
import { Friend, Group } from 'oicq';
import { Friend, Group } from 'icqq';
import { format } from 'date-and-time';
import ZincSearch from 'zincsearch-node';

View File

@ -1,7 +1,7 @@
import Telegram from '../client/Telegram';
import { getLogger, Logger } from 'log4js';
import { BigInteger } from 'big-integer';
import { Platform } from 'oicq';
import { Platform } from 'icqq';
import { MarkupLike } from 'telegram/define';
import OicqClient from '../client/OicqClient';
import { Button } from 'telegram/tl/custom/button';

View File

@ -1,4 +1,4 @@
import { MessageRet } from 'oicq';
import { MessageRet } from 'icqq';
export type WorkMode = 'group' | 'personal';
export type QQMessageSent = MessageRet & { senderId: number, brief: string };

View File

@ -1,4 +1,4 @@
import { Friend, Group } from 'oicq';
import { Friend, Group } from 'icqq';
export default async function getAboutText(entity: Friend | Group, html: boolean) {
let text: string;

View File

@ -1,5 +1,5 @@
import axios from 'axios';
import { Friend, Group } from 'oicq';
import { Friend, Group } from 'icqq';
export function getAvatarUrl(room: number | bigint | Friend | Group): string {
if (!room) return '';

View File

@ -672,23 +672,21 @@ cacheEntries = {
"process@npm:0.11.10" = { filename = "process-npm-0.11.10-aeb3b641ae-bfcce49814.zip"; sha512 = "bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3"; };
"min-document@npm:2.19.0" = { filename = "min-document-npm-2.19.0-458cdb3d84-da6437562e.zip"; sha512 = "da6437562ea2228041542a2384528e74e22d1daa1a4ec439c165abf0b9d8a63e17e3b8a6dc6e0c731845e85301198730426932a0e813d23f932ca668340c9623"; };
"dom-walk@npm:0.1.2" = { filename = "dom-walk-npm-0.1.2-7d20a1a8d8-19eb0ce9c6.zip"; sha512 = "19eb0ce9c6de39d5e231530685248545d9cd2bd97b2cb3486e0bfc0f2a393a9addddfd5557463a932b52fdfcf68ad2a619020cd2c74a5fe46fbecaa8e80872f3"; };
"oicq@https://0w.al/RNnS.tgz" = { filename = "oicq-https-43b48ba9ed-d7710fa58f.zip"; sha512 = "d7710fa58f0119c6e94a148598d692c1f327f231e21f6f40fd9f7e2a9d71fe7fabe0ea07835c4f762d57002e6ac4922c948790f25e679547d50ef93b1e157d35"; };
"icqq@https://files.catbox.moe/03ktyz.tgz" = { filename = "icqq-https-da6a495d2f-072df1060c.zip"; sha512 = "072df1060ca489cbfb3d94c5de2093320180adab07f5a532e5b7cabe19f74b8873c89c7ba82849e2d7689c4ba18dfa3492c482799d95f8a1bd7dd0b5262be6d3"; };
"long@npm:4.0.0" = { filename = "long-npm-4.0.0-ecd96a31ed-16afbe8f74.zip"; sha512 = "16afbe8f749c7c849db1f4de4e2e6a31ac6e617cead3bdc4f9605cb703cd20e1e9fc1a7baba674ffcca57d660a6e5b53a9e236d7b25a295d3855cca79cc06744"; };
"pngjs@npm:6.0.0" = { filename = "pngjs-npm-6.0.0-31d8d85681-ab6c285086.zip"; sha512 = "ab6c285086060087097eab9fe6b5a528a24f9e79c03dea2b4fd6264ed4fdb5beff4a3257eeeaf2a9dc18249b539609c2a4e4013c567164a1f6b5ba2c974d5ecb"; };
"axios@npm:1.2.1" = { filename = "axios-npm-1.2.1-4056ddcb4c-c4dc4e1190.zip"; sha512 = "c4dc4e119064c9aed09a3de309bedb797a139a6fb372223aafe3e0c10a7d4a14e4d3e9c9d309467fadb9d2b490b891ee3df96ef5b55716bb971910466ff9f0c5"; };
"triptrap@npm:0.0.17" = { filename = "triptrap-npm-0.0.17-bc0f4adce1-46cb1e4ed8.zip"; sha512 = "46cb1e4ed85f8d6c2e42993e1a0c47f7d84f97101ea64a01e24882c1c65219620ae938f9b597d8ca9f8d96ddc6bf19e03849dbff131569e4eabb67ed1560e458"; };
"axios@npm:1.4.0" = { filename = "axios-npm-1.4.0-4d7ce8ca3e-7fb6a4313b.zip"; sha512 = "7fb6a4313bae7f45e89d62c70a800913c303df653f19eafec88e56cea2e3821066b8409bc68be1930ecca80e861c52aa787659df0ffec6ad4d451c7816b9386b"; };
"probe-image-size@npm:7.2.3" = { filename = "probe-image-size-npm-7.2.3-2b6ee36e6f-1a5eeb8f5c.zip"; sha512 = "1a5eeb8f5cb979172144a5d7a017c70fcd664ccc8af9ad3a803903ee81864abea4036adae4fc6e66e9ae21bd3ce0febefaf1f32e65a77ff226b2eb61e9e4978c"; };
"log4js@npm:6.4.1" = { filename = "log4js-npm-6.4.1-b00dd7826e-0614949662.zip"; sha512 = "0614949662314573ec7dcd841769a4d23d8cb8268685458a40fcd94f2ae6ec628234cfb9a6bc17821fb6ea6ce3765e779b4966ba1cf918f393dc37155a3615cb"; };
"log4js@npm:6.9.1" = { filename = "log4js-npm-6.9.1-b621c90f9f-59d98c37d4.zip"; sha512 = "59d98c37d4163138dab5d9b06ae26965d1353106fece143973d57b1003b3a482791aa21374fd2cca81a953b8837b2f9756ac225404e60cbfa4dd3ab59f082e2e"; };
"follow-redirects@npm:1.15.2" = { filename = "follow-redirects-npm-1.15.2-1ec1dd82be-faa66059b6.zip"; sha512 = "faa66059b66358ba65c234c2f2a37fcec029dc22775f35d9ad6abac56003268baf41e55f9ee645957b32c7d9f62baf1f0b906e68267276f54ec4b4c597c2b190"; };
"proxy-from-env@npm:1.1.0" = { filename = "proxy-from-env-npm-1.1.0-c13d07f26b-ed7fcc2ba0.zip"; sha512 = "ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4"; };
"lodash.merge@npm:4.6.2" = { filename = "lodash.merge-npm-4.6.2-77cb4416bf-ad580b4bdb.zip"; sha512 = "ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005"; };
"stream-parser@npm:0.3.1" = { filename = "stream-parser-npm-0.3.1-0b70187c85-4d86ff8cff.zip"; sha512 = "4d86ff8cffe7c7587dc91433fff9dce38a93ea7e9f47560055addc81eae6b6befab22b75643ce539faf325fe2b17d371778242566bed086e75f6cffb1e76c06c"; };
"date-format@npm:4.0.3" = { filename = "date-format-npm-4.0.3-ce15085cfe-8ae4d9de35.zip"; sha512 = "8ae4d9de3532010169a89bc7b079342051ba3ec88552636aa677bfb53e8eb15113af8394679aea7d41367dc8bb6e9865da17f21ac2802202180b09d6e3f2339e"; };
"flatted@npm:3.2.5" = { filename = "flatted-npm-3.2.5-0ee5a8875f-3c436e9695.zip"; sha512 = "3c436e9695ccca29620b4be5671dd72e5dd0a7500e0856611b7ca9bd8169f177f408c3b9abfa78dfe1493ee2d873e2c119080a8a9bee4e1a186a9e60ca6c89f1"; };
"date-format@npm:4.0.14" = { filename = "date-format-npm-4.0.14-50da5e5139-dfe5139df6.zip"; sha512 = "dfe5139df6af5759b9dd3c007b899b3f60d45a9240ffeee6314ab74e6ab52e9b519a44ccf285888bdd6b626c66ee9b4c8a523075fa1140617b5beb1cbb9b18d1"; };
"flatted@npm:3.2.7" = { filename = "flatted-npm-3.2.7-0da10b7c56-427633049d.zip"; sha512 = "427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35"; };
"needle@npm:2.9.1" = { filename = "needle-npm-2.9.1-f40e591726-746ae3a378.zip"; sha512 = "746ae3a3782f0a057ff304a98843cc6f2009f978a0fad0c3e641a9d46d0b5702bb3e197ba08aecd48678067874a991c4f5fc320c7e51a4c041d9dd3441146cf0"; };
"streamroller@npm:3.0.2" = { filename = "streamroller-npm-3.0.2-6d7ba8035a-1f323824f0.zip"; sha512 = "1f323824f0e81cc085c24f33addfd8ef00d0c15aafee520a8cf207ca6e2dc674fd852528c7b4450cc87f4335d1269ed18b3f0188853d45d7f0912c9a205d1fc1"; };
"fs-extra@npm:10.0.0" = { filename = "fs-extra-npm-10.0.0-4f8c704115-5285a3d8f3.zip"; sha512 = "5285a3d8f34b917cf2b66af8c231a40c1623626e9d701a20051d3337be16c6d7cac94441c8b3732d47a92a2a027886ca93c69b6a4ae6aee3c89650d2a8880c0a"; };
"universalify@npm:2.0.0" = { filename = "universalify-npm-2.0.0-03b8b418a8-2406a4edf4.zip"; sha512 = "2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44"; };
"jsonfile@npm:6.1.0" = { filename = "jsonfile-npm-6.1.0-20a4796cee-7af3b8e1ac.zip"; sha512 = "7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354"; };
"streamroller@npm:3.1.5" = { filename = "streamroller-npm-3.1.5-2fe0f7e85a-c1df5612b7.zip"; sha512 = "c1df5612b785ffa4b6bbf16460590b62994c57265bc55a5166eebeeb0daf648e84bc52dc6d57e0cd4e5c7609bda93076753c63ff54589febd1e0b95590f0e443"; };
};
in optionalOverride overrideAttrs project

133
yarn.lock
View File

@ -901,13 +901,13 @@ __metadata:
linkType: hard
"axios@npm:^1.1.2":
version: 1.2.1
resolution: "axios@npm:1.2.1"
version: 1.4.0
resolution: "axios@npm:1.4.0"
dependencies:
follow-redirects: ^1.15.0
form-data: ^4.0.0
proxy-from-env: ^1.1.0
checksum: c4dc4e119064c9aed09a3de309bedb797a139a6fb372223aafe3e0c10a7d4a14e4d3e9c9d309467fadb9d2b490b891ee3df96ef5b55716bb971910466ff9f0c5
checksum: 7fb6a4313bae7f45e89d62c70a800913c303df653f19eafec88e56cea2e3821066b8409bc68be1930ecca80e861c52aa787659df0ffec6ad4d451c7816b9386b
languageName: node
linkType: hard
@ -1400,10 +1400,10 @@ __metadata:
languageName: node
linkType: hard
"date-format@npm:^4.0.3":
version: 4.0.3
resolution: "date-format@npm:4.0.3"
checksum: 8ae4d9de3532010169a89bc7b079342051ba3ec88552636aa677bfb53e8eb15113af8394679aea7d41367dc8bb6e9865da17f21ac2802202180b09d6e3f2339e
"date-format@npm:^4.0.14":
version: 4.0.14
resolution: "date-format@npm:4.0.14"
checksum: dfe5139df6af5759b9dd3c007b899b3f60d45a9240ffeee6314ab74e6ab52e9b519a44ccf285888bdd6b626c66ee9b4c8a523075fa1140617b5beb1cbb9b18d1
languageName: node
linkType: hard
@ -1425,7 +1425,7 @@ __metadata:
languageName: node
linkType: hard
"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.3":
"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1":
version: 4.3.3
resolution: "debug@npm:4.3.3"
dependencies:
@ -1891,13 +1891,6 @@ __metadata:
languageName: node
linkType: hard
"flatted@npm:^3.2.4":
version: 3.2.5
resolution: "flatted@npm:3.2.5"
checksum: 3c436e9695ccca29620b4be5671dd72e5dd0a7500e0856611b7ca9bd8169f177f408c3b9abfa78dfe1493ee2d873e2c119080a8a9bee4e1a186a9e60ca6c89f1
languageName: node
linkType: hard
"flatted@npm:^3.2.6":
version: 3.2.6
resolution: "flatted@npm:3.2.6"
@ -1905,6 +1898,13 @@ __metadata:
languageName: node
linkType: hard
"flatted@npm:^3.2.7":
version: 3.2.7
resolution: "flatted@npm:3.2.7"
checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35
languageName: node
linkType: hard
"fluent-ffmpeg@npm:^2.1.2":
version: 2.1.2
resolution: "fluent-ffmpeg@npm:2.1.2"
@ -1989,17 +1989,6 @@ __metadata:
languageName: node
linkType: hard
"fs-extra@npm:^10.0.0":
version: 10.0.0
resolution: "fs-extra@npm:10.0.0"
dependencies:
graceful-fs: ^4.2.0
jsonfile: ^6.0.1
universalify: ^2.0.0
checksum: 5285a3d8f34b917cf2b66af8c231a40c1623626e9d701a20051d3337be16c6d7cac94441c8b3732d47a92a2a027886ca93c69b6a4ae6aee3c89650d2a8880c0a
languageName: node
linkType: hard
"fs-extra@npm:^8.1.0":
version: 8.1.0
resolution: "fs-extra@npm:8.1.0"
@ -2359,6 +2348,20 @@ __metadata:
languageName: node
linkType: hard
"icqq@https://files.catbox.moe/03ktyz.tgz":
version: 0.4.7.1-clansty
resolution: "icqq@https://files.catbox.moe/03ktyz.tgz"
dependencies:
axios: ^1.1.2
log4js: ^6.3.0
long: ^4.0.0
pngjs: ^6.0.0
probe-image-size: ^7.2.2
triptrap: ^0.0.17
checksum: 072df1060ca489cbfb3d94c5de2093320180adab07f5a532e5b7cabe19f74b8873c89c7ba82849e2d7689c4ba18dfa3492c482799d95f8a1bd7dd0b5262be6d3
languageName: node
linkType: hard
"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1":
version: 1.2.1
resolution: "ieee754@npm:1.2.1"
@ -2613,19 +2616,6 @@ __metadata:
languageName: node
linkType: hard
"jsonfile@npm:^6.0.1":
version: 6.1.0
resolution: "jsonfile@npm:6.1.0"
dependencies:
graceful-fs: ^4.1.6
universalify: ^2.0.0
dependenciesMeta:
graceful-fs:
optional: true
checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354
languageName: node
linkType: hard
"jsprim@npm:^1.2.2":
version: 1.4.2
resolution: "jsprim@npm:1.4.2"
@ -2814,15 +2804,15 @@ __metadata:
linkType: hard
"log4js@npm:^6.3.0":
version: 6.4.1
resolution: "log4js@npm:6.4.1"
version: 6.9.1
resolution: "log4js@npm:6.9.1"
dependencies:
date-format: ^4.0.3
debug: ^4.3.3
flatted: ^3.2.4
date-format: ^4.0.14
debug: ^4.3.4
flatted: ^3.2.7
rfdc: ^1.3.0
streamroller: ^3.0.2
checksum: 0614949662314573ec7dcd841769a4d23d8cb8268685458a40fcd94f2ae6ec628234cfb9a6bc17821fb6ea6ce3765e779b4966ba1cf918f393dc37155a3615cb
streamroller: ^3.1.5
checksum: 59d98c37d4163138dab5d9b06ae26965d1353106fece143973d57b1003b3a482791aa21374fd2cca81a953b8837b2f9756ac225404e60cbfa4dd3ab59f082e2e
languageName: node
linkType: hard
@ -3383,19 +3373,6 @@ __metadata:
languageName: node
linkType: hard
"oicq@https://0w.al/RNnS.tgz":
version: 2.3.14-clansty
resolution: "oicq@https://0w.al/RNnS.tgz"
dependencies:
axios: ^1.1.2
log4js: ^6.3.0
long: ^4.0.0
pngjs: ^6.0.0
probe-image-size: ^7.2.2
checksum: d7710fa58f0119c6e94a148598d692c1f327f231e21f6f40fd9f7e2a9d71fe7fabe0ea07835c4f762d57002e6ac4922c948790f25e679547d50ef93b1e157d35
languageName: node
linkType: hard
"omggif@npm:^1.0.10, omggif@npm:^1.0.9":
version: 1.0.10
resolution: "omggif@npm:1.0.10"
@ -3718,10 +3695,10 @@ __metadata:
eviltransform: ^0.2.2
file-type: ^17.1.4
fluent-ffmpeg: ^2.1.2
icqq: "https://files.catbox.moe/03ktyz.tgz"
lodash: ^4.17.21
log4js: ^6.6.1
nodejs-base64: ^2.0.0
oicq: "https://0w.al/RNnS.tgz"
prompts: ^2.4.2
quote-api: "https://github.com/Clansty/quote-api/archive/7d9b4c56ab1e9f3cdf1cd7e108ec25821d89ad70.tar.gz"
sharp: ^0.31.3
@ -4300,17 +4277,6 @@ __metadata:
languageName: node
linkType: hard
"streamroller@npm:^3.0.2":
version: 3.0.2
resolution: "streamroller@npm:3.0.2"
dependencies:
date-format: ^4.0.3
debug: ^4.1.1
fs-extra: ^10.0.0
checksum: 1f323824f0e81cc085c24f33addfd8ef00d0c15aafee520a8cf207ca6e2dc674fd852528c7b4450cc87f4335d1269ed18b3f0188853d45d7f0912c9a205d1fc1
languageName: node
linkType: hard
"streamroller@npm:^3.1.2":
version: 3.1.2
resolution: "streamroller@npm:3.1.2"
@ -4322,6 +4288,17 @@ __metadata:
languageName: node
linkType: hard
"streamroller@npm:^3.1.5":
version: 3.1.5
resolution: "streamroller@npm:3.1.5"
dependencies:
date-format: ^4.0.14
debug: ^4.3.4
fs-extra: ^8.1.0
checksum: c1df5612b785ffa4b6bbf16460590b62994c57265bc55a5166eebeeb0daf648e84bc52dc6d57e0cd4e5c7609bda93076753c63ff54589febd1e0b95590f0e443
languageName: node
linkType: hard
"streamsearch@npm:^1.1.0":
version: 1.1.0
resolution: "streamsearch@npm:1.1.0"
@ -4585,6 +4562,13 @@ __metadata:
languageName: node
linkType: hard
"triptrap@npm:^0.0.17":
version: 0.0.17
resolution: "triptrap@npm:0.0.17"
checksum: 46cb1e4ed85f8d6c2e42993e1a0c47f7d84f97101ea64a01e24882c1c65219620ae938f9b597d8ca9f8d96ddc6bf19e03849dbff131569e4eabb67ed1560e458
languageName: node
linkType: hard
"ts-custom-error@npm:^3.2.0":
version: 3.2.0
resolution: "ts-custom-error@npm:3.2.0"
@ -4806,13 +4790,6 @@ __metadata:
languageName: node
linkType: hard
"universalify@npm:^2.0.0":
version: 2.0.0
resolution: "universalify@npm:2.0.0"
checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44
languageName: node
linkType: hard
"unpipe@npm:1.0.0":
version: 1.0.0
resolution: "unpipe@npm:1.0.0"