diff --git a/src/service/command/meme/index.ts b/src/service/command/meme/index.ts index aded7161..1d8c8e4d 100644 --- a/src/service/command/meme/index.ts +++ b/src/service/command/meme/index.ts @@ -6,6 +6,7 @@ import { lolicon } from './lolicon.js'; import { moeta } from './moeta.js'; import { n } from './n.js'; import { nigetane } from './nigetane.js'; +import { nine } from './nine.js'; import { ojaru } from './ojaru.js'; import { takopi } from './takopi.js'; import { web3 } from './web3.js'; @@ -21,5 +22,6 @@ export const memes = [ moeta, kenjou, koume, - ojaru + ojaru, + nine ]; diff --git a/src/service/command/meme/nine.ts b/src/service/command/meme/nine.ts new file mode 100644 index 00000000..68047558 --- /dev/null +++ b/src/service/command/meme/nine.ts @@ -0,0 +1,13 @@ +import type { MemeTemplate } from '../../../model/meme-template.js'; + +export const nine: MemeTemplate = { + commandNames: ['nine'], + description: '〇〇は〇〇が9割', + flagsKeys: [], + optionsKeys: [], + errorMessage: '人は引数ミスが9割', + generate(args) { + const [option1, option2] = args.body.split(' '); + return `${option1}は${option2}が9割`; + } +}; diff --git a/src/service/command/meme/test/dousurya.test.ts b/src/service/command/meme/test/dousurya.test.ts index 532b9d1c..5ea8bb2f 100644 --- a/src/service/command/meme/test/dousurya.test.ts +++ b/src/service/command/meme/test/dousurya.test.ts @@ -8,6 +8,10 @@ describe('meme', () => { const responder = new Meme(); it('use case of dousurya', async () => { + /** + * !dousurya と !dousureba のテストケースです。 + * 一見同じように見えるが、違うので重複してたからと削除しないよう注意してほしい + */ await responder.on( createMockMessage( parseStringsOrThrow(['dousurya', 'こるく'], responder.schema), diff --git a/src/service/command/meme/test/nine.test.ts b/src/service/command/meme/test/nine.test.ts new file mode 100644 index 00000000..560e5447 --- /dev/null +++ b/src/service/command/meme/test/nine.test.ts @@ -0,0 +1,36 @@ +import { describe, expect, it } from 'vitest'; +import { Meme } from '../../meme.js'; + +import { createMockMessage } from '../../command-message.js'; +import { parseStringsOrThrow } from '../../../../adaptor/proxy/command/schema.js'; + +describe('meme', () => { + const responder = new Meme(); + + it('use case of nine', async () => { + await responder.on( + createMockMessage( + parseStringsOrThrow(['nine', '限界開発鯖', 'オタク'], responder.schema), + (message) => { + expect(message).toStrictEqual({ + description: `限界開発鯖はオタクが9割` + }); + } + ) + ); + }); + + it('args null (nine)', async () => { + await responder.on( + createMockMessage( + parseStringsOrThrow(['nine'], responder.schema), + (message) => { + expect(message).toStrictEqual({ + description: '人は引数ミスが9割', + title: '引数が不足してるみたいだ。' + }); + } + ) + ); + }); +});