取消不必要的 At

This commit is contained in:
lanyi 2021-01-04 03:12:37 +01:00
parent f416b2a2d0
commit cf84683859

View File

@ -46,8 +46,9 @@ const { qq: botQQ, mahConfig, groups: groupNumbers } = parseConfig();
const mirai = new MiraiTs(mahConfig) const mirai = new MiraiTs(mahConfig)
type StoredMessage = { type StoredMessage = {
id: number
author: number author: number
id: number
isOriginal: boolean
} }
class StoredMessages { class StoredMessages {
@ -152,7 +153,10 @@ async function app() {
// 就算在,被好几个群同时 @,也很奇怪( // 就算在,被好几个群同时 @,也很奇怪(
// 因此,除非是为了回复的 @,否则一律转成纯文本 // 因此,除非是为了回复的 @,否则一律转成纯文本
// 就算确实是为了回复的 @,假如转发的群里这个人不在,那也转成纯文本 // 就算确实是为了回复的 @,假如转发的群里这个人不在,那也转成纯文本
if (x.target !== quote?.author || !members.has(x.target)) { // 此外,假如是回复的 @,但是这并不是回复对象的那个群,那么也转成纯文本
if (x.target !== quote?.author ||
!members.has(x.target) ||
!quote.isOriginal) {
// 把 @ 转换成纯文本的时候,优先使用哪个群里的群名片 // 把 @ 转换成纯文本的时候,优先使用哪个群里的群名片
const name = qqToName(x.target) || x.display const name = qqToName(x.target) || x.display
return { type: 'Plain' as const, text: `@${name}` } return { type: 'Plain' as const, text: `@${name}` }
@ -175,7 +179,7 @@ async function app() {
return { sentId: sent.messageId, targetStorage: stored } return { sentId: sent.messageId, targetStorage: stored }
} }
catch (e) { catch (e) {
console.warn(`${JSON.stringify(e)}; type = ${typeof e}; ${e.constructor?.name}`) console.warn(e)
} }
}) })
@ -183,11 +187,20 @@ async function app() {
.filter(<T>(x?: T): x is T => x !== undefined) .filter(<T>(x?: T): x is T => x !== undefined)
for (const { sentId, targetStorage } of results) { for (const { sentId, targetStorage } of results) {
const others = results.filter(other => other.targetStorage !== targetStorage) const others = results.filter(other => other.targetStorage !== targetStorage)
for (const other of others) { const forwarded: StoredMessage = {
targetStorage.add(other.sentId, { author: messageAuthor, id: sentId }) author: messageAuthor,
id: sentId,
isOriginal: false
} }
targetStorage.add(messageId, { author: messageAuthor, id: sentId }) for (const other of others) {
originalGroup?.stored?.add(sentId, { author: messageAuthor, id: messageId }) targetStorage.add(other.sentId, forwarded)
}
targetStorage.add(messageId, forwarded)
originalGroup?.stored?.add(sentId, {
author: messageAuthor,
id: messageId,
isOriginal: true
})
} }
} }
finally { finally {