mirror of https://github.com/Nofated095/Q2TG.git
perf: 优化 lottie 表情处理
This commit is contained in:
parent
3c582e1f9b
commit
55cded00c8
|
@ -1,3 +1,10 @@
|
|||
const TGS = ['打call', '流泪', '变形', '比心', '庆祝', '鞭炮'];
|
||||
export default {
|
||||
TGS_MAP: ['打call', '流泪', '变形', '比心', '庆祝', '鞭炮'].map(text => `[${text}]请使用最新版手机QQ体验新功能`)
|
||||
}
|
||||
getTgsIndex(message: string) {
|
||||
const index1 = TGS.map(text => `[${text}]请使用最新版手机QQ体验新功能`).indexOf(message);
|
||||
if (index1 > -1) {
|
||||
return index1;
|
||||
}
|
||||
return TGS.map(text => `/${text}`).indexOf(message);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -42,8 +42,8 @@ export default class ForwardController {
|
|||
const pair = this.instance.forwardPairs.find(target);
|
||||
if (!pair) return;
|
||||
if (!pair.enable) return;
|
||||
const tgMessages = await this.forwardService.forwardFromQq(event, pair);
|
||||
for (const tgMessage of tgMessages) {
|
||||
const tgMessage = await this.forwardService.forwardFromQq(event, pair);
|
||||
if (tgMessage) {
|
||||
// 更新数据库
|
||||
await db.message.create({
|
||||
data: {
|
||||
|
|
|
@ -11,7 +11,7 @@ import db from '../models/db';
|
|||
import { Button } from 'telegram/tl/custom/button';
|
||||
import { SendMessageParams } from 'telegram/client/messages';
|
||||
import { Api } from 'telegram';
|
||||
import { file as createTempFile, FileResult } from 'tmp-promise';
|
||||
import { file, file as createTempFile, FileResult } from 'tmp-promise';
|
||||
import fsP from 'fs/promises';
|
||||
import eviltransform from 'eviltransform';
|
||||
import silk from '../encoding/silk';
|
||||
|
@ -40,11 +40,11 @@ export default class ForwardService {
|
|||
public async forwardFromQq(event: PrivateMessageEvent | GroupMessageEvent, pair: Pair) {
|
||||
try {
|
||||
const tempFiles: FileResult[] = [];
|
||||
let message = '', files: FileLike[] = [], buttons: ButtonLike[] = [], replyTo = 0, tgs = -1;
|
||||
let messageHeader = '';
|
||||
let message = '', files: FileLike[] = [], buttons: ButtonLike[] = [], replyTo = 0;
|
||||
let messageHeader = '', sender = '';
|
||||
if (event.message_type === 'group') {
|
||||
// 产生头部,这和工作模式没有关系
|
||||
let sender = event.sender.card || event.sender.nickname;
|
||||
sender = event.sender.card || event.sender.nickname;
|
||||
if (event.anonymous) {
|
||||
sender = `[${sender}]${event.anonymous.name}`;
|
||||
}
|
||||
|
@ -63,10 +63,16 @@ export default class ForwardService {
|
|||
message += `<a href="${instantViewUrl}">\u200e</a>`;
|
||||
}
|
||||
// 判断 tgs 表情
|
||||
tgs = lottie.TGS_MAP.indexOf(elem.text);
|
||||
let tgs = lottie.getTgsIndex(elem.text);
|
||||
if (tgs === -1) {
|
||||
message += helper.htmlEscape(elem.text);
|
||||
}
|
||||
else {
|
||||
files.push(`assets/tgs/tgs${tgs}.tgs`);
|
||||
if (event.message_type === 'group') {
|
||||
buttons.push(Button.inline(`${sender}:`));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'at': {
|
||||
|
@ -240,23 +246,14 @@ export default class ForwardService {
|
|||
buttons.length && (messageToSend.buttons = _.chunk(buttons, 3));
|
||||
replyTo && (messageToSend.replyTo = replyTo);
|
||||
|
||||
const tgMessages: Api.Message[] = [];
|
||||
|
||||
if (message || files.length || buttons) {
|
||||
tgMessages.push(await pair.tg.sendMessage(messageToSend));
|
||||
}
|
||||
if (tgs > -1) {
|
||||
tgMessages.push(await pair.tg.sendMessage({
|
||||
file: `assets/tgs/tgs${tgs}.tgs`,
|
||||
}));
|
||||
}
|
||||
const tgMessage = await pair.tg.sendMessage(messageToSend);
|
||||
|
||||
if (this.instance.workMode === 'personal' && event.message_type === 'group' && event.atall) {
|
||||
await tgMessages[0].pin({ notify: false });
|
||||
await tgMessage.pin({ notify: false });
|
||||
}
|
||||
|
||||
tempFiles.forEach(it => it.cleanup());
|
||||
return tgMessages;
|
||||
return tgMessage;
|
||||
}
|
||||
catch (e) {
|
||||
this.log.error('从 QQ 到 TG 的消息转发失败', e);
|
||||
|
@ -265,7 +262,7 @@ export default class ForwardService {
|
|||
}
|
||||
catch {
|
||||
}
|
||||
return [];
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ export default {
|
|||
}
|
||||
if (message.content) {
|
||||
const FORWARD_REGEX = /\[Forward: ([A-Za-z0-9\/+=]+)]/;
|
||||
const tgsIndex = lottie.TGS_MAP.indexOf(message.content);
|
||||
const tgsIndex = lottie.getTgsIndex(message.content);
|
||||
if (tgsIndex > -1) {
|
||||
output += `${format(date, 'DD/MM/YYYY, HH:mm')} - ${sender}: tgs${tgsIndex}.file (file attached)\n`;
|
||||
files.add(`tgs${tgsIndex}`);
|
||||
|
|
Loading…
Reference in New Issue