From 296bd924cde8d1ed79a5142582c4cb061c9807e8 Mon Sep 17 00:00:00 2001 From: Jerryplusy Date: Thu, 4 Sep 2025 13:38:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:meme=E4=BB=93=E5=BA=93=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/path/path.service.ts | 2 +- src/modules/meme/meme.module.ts | 4 ++-- src/modules/meme/meme.service.ts | 27 +++++++++++++++++++++++++-- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/core/path/path.service.ts b/src/core/path/path.service.ts index f43bd90..df3ece3 100644 --- a/src/core/path/path.service.ts +++ b/src/core/path/path.service.ts @@ -29,7 +29,7 @@ export class PathService { modules: path.join(this.baseDir, 'src/modules'), words: path.join(this.baseDir, 'private/words/src'), private: path.join(this.baseDir, 'private'), - meme: path.join(this.baseDir, 'private/meme'), + meme: path.join(this.baseDir, 'private/meme/src'), }; return type ? mappings[type] : this.baseDir; diff --git a/src/modules/meme/meme.module.ts b/src/modules/meme/meme.module.ts index 5aef0b6..f1db777 100644 --- a/src/modules/meme/meme.module.ts +++ b/src/modules/meme/meme.module.ts @@ -1,11 +1,11 @@ import { Module } from '@nestjs/common'; import { MemeService } from './meme.service'; import { MemeController } from './meme.controller'; -import { PathService } from '../../core/path/path.service'; import { PathModule } from '../../core/path/path.module'; +import { AutoUpdateModule } from '../../core/auto-update/auto-update.module'; @Module({ - imports: [PathModule], + imports: [PathModule, AutoUpdateModule], providers: [MemeService], controllers: [MemeController], }) diff --git a/src/modules/meme/meme.service.ts b/src/modules/meme/meme.service.ts index 9542d47..c68d7ae 100644 --- a/src/modules/meme/meme.service.ts +++ b/src/modules/meme/meme.service.ts @@ -2,12 +2,35 @@ import { Inject, Injectable, Logger } from '@nestjs/common'; import * as path from 'path'; import * as fs from 'fs/promises'; import { PathService } from '../../core/path/path.service'; +import { AutoUpdateService } from '../../core/auto-update/auto-update.service'; @Injectable() export class MemeService { private readonly logger = new Logger(MemeService.name); + private readonly updateMs = 15 * 60 * 1000; // 15min - constructor(@Inject(PathService) private readonly pathService: PathService) {} + constructor( + @Inject(PathService) + private readonly pathService: PathService, + @Inject(AutoUpdateService) + private readonly autoUpdateService: AutoUpdateService, + ) { + this.startAutoUpdate(); + } + + private startAutoUpdate() { + setInterval(async () => { + const memePath = this.pathService.get('meme'); + this.logger.log('定时检查表情仓库更新..'); + const updated = await this.autoUpdateService.checkRepoForUpdates( + memePath, + 'meme 仓库', + ); + if (updated) { + this.logger.log('表情仓库已更新..'); + } + }, this.updateMs); + } /** * 获取表情路径 @@ -18,7 +41,7 @@ export class MemeService { character?: string, status?: string, ): Promise { - const baseDir = path.join(this.pathService.get('private'), 'meme'); + const baseDir = path.join(this.pathService.get('meme')); try { if (!character) {