mirror of https://github.com/Nofated095/Q2TG.git
feat: 被 at 时在 tg 中 at,at 全体成员消息置顶
This commit is contained in:
parent
7874dfa0fb
commit
56e0a69694
|
@ -7,6 +7,11 @@ import { ForwardMessage } from 'oicq';
|
|||
|
||||
const log = getLogger('ForwardHelper');
|
||||
|
||||
const htmlEscape = (text: string) =>
|
||||
text.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>');
|
||||
|
||||
export default {
|
||||
async downloadToCustomFile(url: string, allowWebp = false) {
|
||||
const { fileTypeFromBuffer } = await (Function('return import("file-type")')() as Promise<typeof import('file-type')>);
|
||||
|
@ -35,10 +40,7 @@ export default {
|
|||
return (size / Math.pow(BYTE, 4)).toFixed(1) + 'TB';
|
||||
},
|
||||
|
||||
htmlEscape: (text: string) =>
|
||||
text.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>'),
|
||||
htmlEscape,
|
||||
|
||||
processJson(json: string) {
|
||||
const jsonObj = JSON.parse(json);
|
||||
|
@ -142,7 +144,7 @@ export default {
|
|||
let result = '<b>转发的消息记录</b>';
|
||||
for (const message of messages) {
|
||||
result += `\n<b>${message.nickname}: </b>` +
|
||||
`${message.raw_message.length > 10 ? message.raw_message.substring(0, 10) + '…' : message.raw_message}`;
|
||||
`${htmlEscape(message.raw_message.length > 10 ? message.raw_message.substring(0, 10) + '…' : message.raw_message)}`;
|
||||
}
|
||||
if (count > messages.length) {
|
||||
result += `\n<b>共 ${count} 条消息记录</b>`;
|
||||
|
|
|
@ -188,6 +188,10 @@ export default class Instance {
|
|||
return this.tgBot.me;
|
||||
}
|
||||
|
||||
get userMe() {
|
||||
return this.tgUser.me;
|
||||
}
|
||||
|
||||
get ownerChat() {
|
||||
return this._ownerChat;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ export default class ForwardService {
|
|||
public async forwardFromQq(event: PrivateMessageEvent | GroupMessageEvent, pair: Pair) {
|
||||
try {
|
||||
const tempFiles: FileResult[] = [];
|
||||
let message = '', files: FileLike[] = [], button: MarkupLike, replyTo = 0, noEscape = false;
|
||||
let message = '', files: FileLike[] = [], button: MarkupLike, replyTo = 0;
|
||||
let messageHeader = '';
|
||||
if (event.message_type === 'group') {
|
||||
// 产生头部,这和工作模式没有关系
|
||||
|
@ -151,8 +151,7 @@ export default class ForwardService {
|
|||
case 'forward':
|
||||
try {
|
||||
const messages = await pair.qq.getForwardMsg(result.resId);
|
||||
message = helper.htmlEscape(helper.generateForwardBrief(messages));
|
||||
noEscape = true;
|
||||
message = helper.generateForwardBrief(messages);
|
||||
const hash = md5Hex(result.resId);
|
||||
button = Button.url('📃查看', `${process.env.CRV_API}/?hash=${hash}`);
|
||||
// 传到 Cloudflare
|
||||
|
@ -186,6 +185,10 @@ export default class ForwardService {
|
|||
message = message.trim();
|
||||
message = messageHeader + (message && messageHeader ? '\n' : '') + message;
|
||||
|
||||
if (event.message_type === 'group' && event.atme) {
|
||||
message += `\n<b>@${this.instance.userMe.username}</b>`;
|
||||
}
|
||||
|
||||
// 处理回复
|
||||
if (event.source) {
|
||||
try {
|
||||
|
@ -219,6 +222,11 @@ export default class ForwardService {
|
|||
replyTo && (messageToSend.replyTo = replyTo);
|
||||
|
||||
const messageSent = await pair.tg.sendMessage(messageToSend);
|
||||
|
||||
if (event.message_type === 'group' && event.atall) {
|
||||
await messageSent.pin({ notify: false });
|
||||
}
|
||||
|
||||
tempFiles.forEach(it => it.cleanup());
|
||||
return messageSent;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue