120 lines
4.6 KiB
TypeScript
120 lines
4.6 KiB
TypeScript
import {Module} from '@nestjs/common';
|
|
import {ConfigModule} from '@nestjs/config';
|
|
|
|
import {BullModule} from '@nestjs/bullmq';
|
|
import {AppController} from './app.controller';
|
|
import {AppService} from './app.service';
|
|
import {ManagerModule} from "./modules/manager/manager.module";
|
|
import {TelegramModule} from "./modules/telegram/telegram.module";
|
|
import {SocialModule} from "./modules/social-api/social.module";
|
|
import {AIService} from "./shared/ai.service";
|
|
import {TelegrafModule} from "nestjs-telegraf";
|
|
import {BullBoardModule} from "@bull-board/nestjs";
|
|
import {ExpressAdapter} from "@bull-board/express";
|
|
import {PrismaService} from "../prisma/prisma.service";
|
|
import {PgPostService} from "./shared/pg.post.service";
|
|
import {PrismaModule} from "../prisma/prisma.module";
|
|
import {CacheModule} from "@nestjs/cache-manager";
|
|
import KeyvRedis from "@keyv/redis";
|
|
import {XReaderModule} from './modules/x-reader/x-reader.module';
|
|
import {CollectorModule} from "./modules/collector/collector.module";
|
|
import {TrendsModule} from "./modules/trends/trends.module";
|
|
import configuration from "./common/config/configuration";
|
|
import {SchedulerModule} from "./modules/scheduler/scheduler.module";
|
|
import {ContentWriterModule} from "./modules/content-writer/content-writer.module";
|
|
import {TeleGrammYModule} from "./modules/tele-grammY/tele-grammY.module";
|
|
import {session} from "telegraf";
|
|
import {Redis} from '@telegraf/session/redis';
|
|
import {XUploaderModule} from "./modules/x-uploader/x-uploader.module";
|
|
import {TiktokDownloadModule} from "./modules/tiktok-download/tiktok.download.module";
|
|
import {XCacheModule} from "./modules/x-cache/x-cache.module";
|
|
import {SqsModule} from "./modules/sqs-module/sqs.module";
|
|
import {SqsPostService} from "./modules/sqs-module/sqs.post.service";
|
|
|
|
@Module({
|
|
imports: [
|
|
// DevtoolsModule.register({
|
|
// http: process.env.NODE_ENV !== 'production',
|
|
// }),
|
|
ConfigModule.forRoot(
|
|
{
|
|
isGlobal: true,
|
|
load: [configuration],
|
|
},
|
|
),
|
|
CacheModule.registerAsync({
|
|
isGlobal: true,
|
|
useFactory: () => ({
|
|
stores: [
|
|
new KeyvRedis(`redis://${process.env.REDIS_URL}:6379/1`)
|
|
],
|
|
}),
|
|
}),
|
|
BullModule.forRoot({
|
|
connection: {
|
|
host: process.env.REDIS_URL,
|
|
port: 6379,
|
|
},
|
|
}),
|
|
//register the bull-board module forRoot in your app.module
|
|
BullBoardModule.forRoot({
|
|
route: "/queues",
|
|
adapter: ExpressAdapter
|
|
}),
|
|
TelegrafModule.forRoot({
|
|
token: process.env.TELEGRAM_BOT_TOKEN!,
|
|
middlewares: [
|
|
session({
|
|
store: Redis({
|
|
url: `redis://${process.env.REDIS_URL}/3`, // Dùng DB 2 để tách biệt với CacheModule`
|
|
})
|
|
}), // BẮT BUỘC: Phải có store này thì Wizard mới nhảy bước được
|
|
(ctx, next) => {
|
|
const allowedIds = (process.env.TELEGRAM_ALLOW_CHAT_IDS || '').split(',');
|
|
if (allowedIds.includes(''+ctx.chat?.id)) {
|
|
return next();
|
|
}
|
|
return ctx.reply('Xin lỗi, bạn không có quyền sử dụng bot này.');
|
|
},
|
|
],
|
|
}),
|
|
// TelegrafModule.forRootAsync({
|
|
// useFactory: () => {
|
|
// // NestJS CacheManager stores (Keyv) usually expose the client
|
|
//
|
|
// return {
|
|
// token: process.env.TELEGRAM_BOT_TOKEN!,
|
|
// middlewares: [
|
|
// session({
|
|
// store: new KeyvRedis({
|
|
// url: 'redis://127.0.0.1:6379/3', // Dùng DB 2 để tách biệt với CacheModule
|
|
// })
|
|
// }),
|
|
// ],
|
|
// };
|
|
// },
|
|
// // token: process.env.TELEGRAM_BOT_TOKEN!,
|
|
// // middlewares: [session()],
|
|
// }),
|
|
XCacheModule,
|
|
PrismaModule,
|
|
ManagerModule,
|
|
SocialModule,
|
|
ContentWriterModule,
|
|
CollectorModule,
|
|
TrendsModule,
|
|
TelegramModule,
|
|
TeleGrammYModule,
|
|
XReaderModule,
|
|
SchedulerModule,
|
|
XUploaderModule,
|
|
TiktokDownloadModule,
|
|
SqsModule,
|
|
],
|
|
controllers: [AppController],
|
|
providers: [AppService, AIService, PrismaService, PgPostService, SqsPostService],
|
|
exports: [],
|
|
})
|
|
export class AppModule {
|
|
}
|