Improve AI

This commit is contained in:
syuilo 2018-09-02 23:16:20 +09:00
parent 70074482f5
commit 9872ef158b
3 changed files with 48 additions and 11 deletions

View file

@ -33,6 +33,7 @@ export default class CoreModule implements IModule {
this.nadenade(msg) ||
this.kawaii(msg) ||
this.suki(msg) ||
this.hug(msg) ||
this.humu(msg) ||
this.batou(msg) ||
this.ponkotu(msg)
@ -223,6 +224,20 @@ export default class CoreModule implements IModule {
return true;
}
private hug = (msg: MessageLike): boolean => {
if (!msg.or(['ぎゅ'])) return false;
// メッセージのみ
if (!msg.isMessage) return true;
msg.reply(
msg.friend.love >= 5 ? serifs.core.hug.love :
msg.friend.love <= -3 ? serifs.core.hug.hate :
serifs.core.hug.normal);
return true;
}
private humu = (msg: MessageLike): boolean => {
if (!msg.includes(['踏んで'])) return false;

View file

@ -54,6 +54,14 @@ export default {
hate: null
},
hug: {
normal: 'ぎゅー...',
love: 'ぎゅー♪',
hate: '離れてください...'
},
humu: {
normal: 'え、えっと…… ふみふみ……… どうですか…?',

View file

@ -3,18 +3,32 @@ import { hiraganaToKatagana, hankakuToZenkaku } from './japanese';
export default function(text: string, words: string[]): boolean {
if (text == null) return false;
text = cleanup(hankakuToZenkaku(hiraganaToKatagana(text)));
text = hankakuToZenkaku(hiraganaToKatagana(text));
words = words.map(word => hiraganaToKatagana(word));
return words.some(word => text == word);
return words.some(word => {
/**
*
*
*/
function cleanup(text: string): string {
return text.trim()
.replace(/[!]+$/, '')
// 末尾の ー を除去
// 例えば「おはよー」を「おはよ」にする
// ただそのままだと「セーラー」などの本来「ー」が含まれているワードも「ー」が除去され
// 「セーラ」になり、「セーラー」を期待している場合はマッチしなくなり期待する動作にならなくなるので、
// 期待するワードの末尾にもともと「ー」が含まれている場合は(対象のテキストの「ー」をすべて除去した後に)「ー」を付けてあげる
.replace(/ー+$/, '') + (word[word.length - 1] == 'ー' ? 'ー' : '')
.replace(/ッ+$/, '')
.replace(/。$/, '')
.replace(/デス$/, '')
.replace(/^藍/, '')
.replace(/^チャン/, '')
.replace(/、+$/, '');
}
return (text == word) || (cleanup(text) == word);
});
}
function cleanup(text: string): string {
return text.trim()
.replace(/[!]+$/, '')
.replace(/。$/, '')
.replace(/デス$/, '')
.replace(/^藍/, '')
.replace(/^チャン/, '')
.replace(/、+$/, '');
}