允许设定获取的消息的最大限制
This commit is contained in:
@@ -81,24 +81,25 @@ export default class Chat extends BaseClientObject {
|
|||||||
* 对话消息
|
* 对话消息
|
||||||
* ================================================
|
* ================================================
|
||||||
*/
|
*/
|
||||||
async getMessages(args: { page?: number, offset?: number }) {
|
async getMessages(args: { page?: number, offset?: number, limit?: number }) {
|
||||||
return (await this.getMessageBeans(args)).map((v) => new Message(this.client, v))
|
return (await this.getMessageBeans(args)).map((v) => new Message(this.client, v))
|
||||||
}
|
}
|
||||||
async getMessagesOrThrow(args: { page?: number, offset?: number }) {
|
async getMessagesOrThrow(args: { page?: number, offset?: number, limit?: number }) {
|
||||||
return (await this.getMessageBeansOrThrow(args)).map((v) => new Message(this.client, v))
|
return (await this.getMessageBeansOrThrow(args)).map((v) => new Message(this.client, v))
|
||||||
}
|
}
|
||||||
async getMessageBeans(args: { page?: number, offset?: number }) {
|
async getMessageBeans(args: { page?: number, offset?: number, limit?: number }) {
|
||||||
try {
|
try {
|
||||||
return await this.getMessageBeansOrThrow(args)
|
return await this.getMessageBeansOrThrow(args)
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async getMessageBeansOrThrow({ page, offset }: { page?: number, offset?: number }) {
|
async getMessageBeansOrThrow({ page, offset, limit }: { page?: number, offset?: number, limit?: number }) {
|
||||||
const re = await this.client.invoke("Chat.getMessageHistory", {
|
const re = await this.client.invoke("Chat.getMessageHistory", {
|
||||||
token: this.client.access_token,
|
token: this.client.access_token,
|
||||||
page,
|
page,
|
||||||
offset,
|
offset,
|
||||||
|
limit,
|
||||||
target: this.bean.id,
|
target: this.bean.id,
|
||||||
})
|
})
|
||||||
if (re.code == 200) return re.data!.messages as MessageBean[]
|
if (re.code == 200) return re.data!.messages as MessageBean[]
|
||||||
|
|||||||
@@ -61,3 +61,5 @@ export const CallableMethodBeforeAuth = [
|
|||||||
"User.login",
|
"User.login",
|
||||||
"User.refreshAccessToken",
|
"User.refreshAccessToken",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
export const PageFetchMaxLimit = 15
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ export default class ChatApi extends BaseApi {
|
|||||||
code: 200,
|
code: 200,
|
||||||
msg: "成功",
|
msg: "成功",
|
||||||
data: {
|
data: {
|
||||||
messages: MessagesManager.getInstanceForChat(chat)[args.page ? 'getMessagesWithPage' : 'getMessagesWithOffset'](null, (args.page ? args.page : args.offset) as number),
|
messages: MessagesManager.getInstanceForChat(chat)[args.page ? 'getMessagesWithPage' : 'getMessagesWithOffset'](args.limit as number | undefined, (args.page ? args.page : args.offset) as number),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import chalk from "chalk"
|
|||||||
import config from "../config.ts"
|
import config from "../config.ts"
|
||||||
import Chat from "./Chat.ts"
|
import Chat from "./Chat.ts"
|
||||||
import MessageBean from "./MessageBean.ts"
|
import MessageBean from "./MessageBean.ts"
|
||||||
|
import { PageFetchMaxLimit } from "lingchair-internal-shared"
|
||||||
|
|
||||||
export default class MessagesManager {
|
export default class MessagesManager {
|
||||||
static database: DatabaseSync = this.init()
|
static database: DatabaseSync = this.init()
|
||||||
@@ -60,13 +61,13 @@ export default class MessagesManager {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
getMessagesWithOffset(limit: number | undefined | null, offset: number = 0) {
|
getMessagesWithOffset(limit: number | undefined | null, offset: number = 0) {
|
||||||
const ls = MessagesManager.database.prepare(`SELECT * FROM ${this.getTableName()} ORDER BY id DESC LIMIT ? OFFSET ?;`).all(limit || 15, offset) as unknown as MessageBean[]
|
const ls = MessagesManager.database.prepare(`SELECT * FROM ${this.getTableName()} ORDER BY id DESC LIMIT ? OFFSET ?;`).all(limit || PageFetchMaxLimit, offset) as unknown as MessageBean[]
|
||||||
return ls.map((v) => ({
|
return ls.map((v) => ({
|
||||||
...v,
|
...v,
|
||||||
chat_id: this.chat.bean.id,
|
chat_id: this.chat.bean.id,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
getMessagesWithPage(limit: number | undefined | null, page: number = 0) {
|
getMessagesWithPage(limit: number | undefined | null, page: number = 0) {
|
||||||
return this.getMessagesWithOffset(limit, (limit || 15) * page)
|
return this.getMessagesWithOffset(limit, (limit || PageFetchMaxLimit) * page)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user