Commit 423a0eb9 authored by nanahira's avatar nanahira

remove bot controller

parent f38a5d8a
Pipeline #3212 passed with stages
in 1 minute and 45 seconds
# App name
App description.
## Environment
* `DB_HOST` `DB_PORT` `DB_USER` `DB_PASS` `DB_NAME` Database configs.
* `CQ_ID` QQ account.
* `CQ_SERVER` OneBot server address.
* `CQ_TOKEN` OneBot server token.
## Installation
```bash
$ npm install
```
## Running the app
```bash
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
```
## License
AGPLv3
...@@ -4,10 +4,12 @@ import { AppService } from './app.service'; ...@@ -4,10 +4,12 @@ import { AppService } from './app.service';
import { AppLogger } from './app.logger'; import { AppLogger } from './app.logger';
import { TypeOrmModule } from '@nestjs/typeorm'; import { TypeOrmModule } from '@nestjs/typeorm';
import { typeormConfig } from './config'; import { typeormConfig } from './config';
import { BotService } from './bot/bot.service';
import { BotLogger } from './bot/bot.logger';
@Module({ @Module({
imports: [TypeOrmModule.forRoot(typeormConfig())], imports: [TypeOrmModule.forRoot(typeormConfig())],
controllers: [AppController], controllers: [AppController],
providers: [AppService, AppLogger], providers: [AppService, AppLogger, BotService, BotLogger],
}) })
export class AppModule {} export class AppModule {}
...@@ -10,7 +10,6 @@ export class AppService { ...@@ -10,7 +10,6 @@ export class AppService {
@InjectConnection('app') @InjectConnection('app')
private db: Connection, private db: Connection,
private log: AppLogger, private log: AppLogger,
private botService: BotService,
) { ) {
this.log.setContext('app'); this.log.setContext('app');
} }
......
import { Test, TestingModule } from '@nestjs/testing';
import { BotController } from './bot.controller';
describe('BotController', () => {
let controller: BotController;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [BotController],
}).compile();
controller = module.get<BotController>(BotController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
});
import { Controller } from '@nestjs/common';
import { AppService } from '../app.service';
import { BotService } from './bot.service';
import { App } from 'koishi';
import * as koishiCommonPlugin from 'koishi-plugin-common';
import * as adapter from 'koishi-adapter-onebot';
const __ = typeof adapter; // just for import
@Controller('_bot')
export class BotController {
bot: App;
constructor(
private readonly appService: AppService,
private readonly botService: BotService,
) {
this.initializeBot();
}
async initializeBot() {
this.bot = new App({
type: 'onebot:ws',
selfId: process.env.CQ_ID,
server: process.env.CQ_SERVER,
token: process.env.CQ_TOKEN,
prefix: process.env.CQ_PREFIX || '.',
});
this.bot.plugin(koishiCommonPlugin);
this.loadBotRouters();
await this.bot.start();
this.botService.log.log(`Bot started.`);
}
loadBotRouters() {
// all middlewares should be here.
this.bot.command('echo <msg:text>').action((argv, msg) => {
return msg;
});
}
}
...@@ -4,15 +4,47 @@ import { Connection } from 'typeorm'; ...@@ -4,15 +4,47 @@ import { Connection } from 'typeorm';
import { BotLogger } from './bot.logger'; import { BotLogger } from './bot.logger';
import { User } from '../entities/User'; import { User } from '../entities/User';
import { Group } from '../entities/Group'; import { Group } from '../entities/Group';
import { App, AppConfig } from 'koishi';
import { AppService } from '../app.service';
import * as koishiCommonPlugin from 'koishi-plugin-common';
import * as adapter from 'koishi-adapter-onebot';
import { CQBot } from 'koishi-adapter-onebot';
const __ = typeof adapter; // just for import
@Injectable() @Injectable()
export class BotService { export class BotService {
bot: App;
botConfig: AppConfig;
constructor( constructor(
@InjectConnection('app') @InjectConnection('app')
private db: Connection, private db: Connection,
public log: BotLogger, public log: BotLogger,
private readonly appService: AppService,
) { ) {
this.log.setContext('bot'); this.log.setContext('bot');
this.initializeBot();
}
async initializeBot() {
this.botConfig = {
type: 'onebot:ws',
selfId: process.env.CQ_ID,
server: process.env.CQ_SERVER,
token: process.env.CQ_TOKEN,
prefix: process.env.CQ_PREFIX || '.',
};
this.bot = new App(this.botConfig);
this.bot.plugin(koishiCommonPlugin, {
onFriendRequest: true,
});
this.loadBotRouters();
await this.bot.start();
this.log.log(`Bot started.`);
}
loadBotRouters() {
// all middlewares should be here.
this.bot.command('echo <msg:text>').action((argv, msg) => {
return msg;
});
} }
async findOrCreateUser(id: string, name?: string) { async findOrCreateUser(id: string, name?: string) {
...@@ -53,4 +85,7 @@ export class BotService { ...@@ -53,4 +85,7 @@ export class BotService {
} }
return ent; return ent;
} }
getBot() {
return (this.bot.bots[0] as unknown) as CQBot;
}
} }
# App name
App description.
## Environment
* `DB_HOST` `DB_PORT` `DB_USER` `DB_PASS` `DB_NAME` Database configs.
## Installation
```bash
$ npm install
```
## Running the app
```bash
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
```
## License
AGPLv3
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment