文案重载

This commit is contained in:
Jerry 2025-05-20 18:20:47 +08:00
parent cdbe05be1a
commit fb9be8ded7
3 changed files with 61 additions and 3 deletions

View File

@ -93,7 +93,7 @@ class BotService {
* @param message
*/
public async sendMessage(groupId: number, message: string): Promise<boolean> {
logger.debug('sendGroupMessage..');
logger.info(`发送${message}${groupId}..`);
const sendBot: number | undefined = await this.getGroupBot(groupId);
if (!sendBot) {
logger.warn(`不存在能向群聊${groupId}发送消息的Bot!`);

View File

@ -1,6 +1,7 @@
import express from 'express';
import WordsService from './words.service';
import response from '../../utils/core/response';
import tools from '../../utils/modules/tools';
class WordsController {
private readonly router: express.Router;
@ -16,12 +17,18 @@ class WordsController {
private init(): void {
this.router.get('/getText/:id', this.getText);
this.router.post('/reloadText', this.reloadWord);
}
/**
*
* @param req
* @param res
*/
private getText = async (req: express.Request, res: express.Response): Promise<void> => {
try {
const id = req.params.id;
const texts = await WordsService.loadWordById(id);
const texts = await WordsService.loadWordById(id.toString());
if (!texts || texts.length === 0) {
return await response.error(res, `文案${id}不存在或为空..`, 404);
}
@ -32,5 +39,28 @@ class WordsController {
await response.error(res);
}
};
/**
*
* @param req
* @param res
*/
private reloadWord = async (req: express.Request, res: express.Response): Promise<void> => {
try {
const id = req.params.id;
const token = req.params.token;
if (tools.checkToken(token)) {
if (await WordsService.reloadWord(id.toString())) {
await response.success(res, '成功重载..');
} else {
await response.error(res, '重载失败..');
}
} else {
await tools.tokenCheckFailed(res, token);
}
} catch (e) {
await response.error(res);
}
};
}
export default new WordsController();

View File

@ -4,8 +4,14 @@ import fs from 'fs/promises';
import logger from '../../utils/core/logger';
class WordsService {
private wordCache: Record<string, string[]> = {};
private wordCache: Record<string, string[]> = {}; //缓存
/**
* json到内存&
* @param id
*/
public async loadWordById(id: string): Promise<string[] | null> {
logger.info(`Loading words ${id}..`);
if (this.wordCache[id]) return this.wordCache[id];
const filePath = path.join(paths.get('words'), `${id}.json`);
try {
@ -23,5 +29,27 @@ class WordsService {
return null;
}
}
/**
* json到内存
* @param id
*/
public async reloadWord(id: string): Promise<boolean> {
logger.info(`Reloading word: ${id}..`);
const filePath = path.join(paths.get('words'), `${id}.json`);
try {
const content = await fs.readFile(filePath, 'utf-8');
const parsed = JSON.parse(content);
if (Array.isArray(parsed)) {
this.wordCache[id] = parsed.filter((item) => typeof item === 'string');
return true;
} else {
return false;
}
} catch (e) {
logger.error(`Failed to reloadWordById: ${id}..`);
return false;
}
}
}
export default new WordsService();