diff --git a/src/modules/core/index.ts b/src/modules/core/index.ts index 5e06499..ed1851e 100644 --- a/src/modules/core/index.ts +++ b/src/modules/core/index.ts @@ -53,7 +53,7 @@ export default class CoreModule implements IModule { data.lastBirthdayChecked = today; friend.setPerModulesData(this, data); - const text = friend.name ? serifs.core.happyBirthdayWithName.replace('{name}', friend.name) : serifs.core.happyBirthday; + const text = serifs.core.happyBirthday(friend.name); this.ai.sendMessage(friend.userId, { text: text @@ -92,7 +92,7 @@ export default class CoreModule implements IModule { if (withSan) { msg.friend.updateName(name); - msg.reply(serifs.core.setNameOk.replace('{name}', name)); + msg.reply(serifs.core.setNameOk(name)); } else { msg.reply(serifs.core.san).then(reply => { this.ai.subscribeReply(this, msg.userId, msg.isMessage, msg.isMessage ? msg.userId : reply.id, { @@ -108,6 +108,7 @@ export default class CoreModule implements IModule { if (!msg.text) return false; const incLove = () => { + //#region 1日に1回だけ親愛度を上げる const today = getDate(); const data = msg.friend.getPerModulesData(this); @@ -118,41 +119,24 @@ export default class CoreModule implements IModule { msg.friend.setPerModulesData(this, data); msg.friend.incLove(); + //#endregion }; if (msg.text.includes('こんにちは')) { - if (msg.friend.name) { - msg.reply(serifs.core.helloWithName.replace('{name}', msg.friend.name)); - } else { - msg.reply(serifs.core.hello); - } - + msg.reply(serifs.core.hello(msg.friend.name)); incLove(); - return true; } if (msg.text.includes('おはよ')) { - if (msg.friend.name) { - msg.reply(serifs.core.goodMorningWithName.replace('{name}', msg.friend.name)); - } else { - msg.reply(serifs.core.goodMorning); - } - + msg.reply(serifs.core.goodMorning(msg.friend.name)); incLove(); - return true; } if (msg.text.includes('おやすみ')) { - if (msg.friend.name) { - msg.reply(serifs.core.goodNightWithName.replace('{name}', msg.friend.name)); - } else { - msg.reply(serifs.core.goodNight); - } - + msg.reply(serifs.core.goodNight(msg.friend.name)); incLove(); - return true; } @@ -201,7 +185,7 @@ export default class CoreModule implements IModule { if (msg.text == null) return; const done = () => { - msg.reply(serifs.core.setNameOk.replace('{name}', msg.friend.name)); + msg.reply(serifs.core.setNameOk(msg.friend.name)); this.ai.unsubscribeReply(this, msg.userId); }; diff --git a/src/modules/emoji/index.ts b/src/modules/emoji/index.ts index b4ff498..0d41acc 100644 --- a/src/modules/emoji/index.ts +++ b/src/modules/emoji/index.ts @@ -128,7 +128,7 @@ export default class EmojiModule implements IModule { const hand = hands[Math.floor(Math.random() * hands.length)]; const face = faces[Math.floor(Math.random() * faces.length)]; const emoji = Array.isArray(hand) ? hand[0] + face + hand[1] : hand + face + hand; - msg.reply(serifs.emoji.suggest.replace('$', emoji)); + msg.reply(serifs.emoji.suggest(emoji)); return true; } else { return false; diff --git a/src/modules/fortune/index.ts b/src/modules/fortune/index.ts index 4b3faeb..5c7385d 100644 --- a/src/modules/fortune/index.ts +++ b/src/modules/fortune/index.ts @@ -30,7 +30,9 @@ export default class FortuneModule implements IModule { public install = (ai: 藍) => { } public onMention = (msg: MessageLike) => { - if (msg.text && (msg.text.includes('占') || msg.text.includes('うらな') || msg.text.includes('運勢'))) { + if (msg.text == null) return false; + + if (msg.text.includes('占') || msg.text.includes('うらな') || msg.text.includes('運勢') || msg.text.includes('おみくじ')) { const date = new Date(); const seed = `${date.getFullYear()}/${date.getMonth()}/${date.getDay()}@${msg.userId}`; const rng = seedrandom(seed); diff --git a/src/modules/guessing-game/index.ts b/src/modules/guessing-game/index.ts index 01e2db9..2b7f75d 100644 --- a/src/modules/guessing-game/index.ts +++ b/src/modules/guessing-game/index.ts @@ -102,15 +102,15 @@ export default class GuessingGameModule implements IModule { if (exist.secret < g) { text = firsttime - ? serifs.guessingGame.less.replace('$', g.toString()) - : serifs.guessingGame.lessAgain.replace('$', g.toString()); + ? serifs.guessingGame.less(g.toString()) + : serifs.guessingGame.lessAgain(g.toString()); } else if (exist.secret > g) { text = firsttime - ? serifs.guessingGame.grater.replace('$', g.toString()) - : serifs.guessingGame.graterAgain.replace('$', g.toString()); + ? serifs.guessingGame.grater(g.toString()) + : serifs.guessingGame.graterAgain(g.toString()); } else { end = true; - text = serifs.guessingGame.congrats.replace('{tries}', exist.tries.length.toString()); + text = serifs.guessingGame.congrats(exist.tries.length.toString()); } if (end) { diff --git a/src/modules/reversi/back.ts b/src/modules/reversi/back.ts index 597e0f6..db87908 100644 --- a/src/modules/reversi/back.ts +++ b/src/modules/reversi/back.ts @@ -217,29 +217,29 @@ class Session { if (msg.body.game.surrendered) { if (this.isSettai) { - text = serifs.reversi.settaiButYouSurrendered.replace('{name}', this.userName); + text = serifs.reversi.settaiButYouSurrendered(this.userName); } else { - text = serifs.reversi.youSurrendered.replace('{name}', this.userName); + text = serifs.reversi.youSurrendered(this.userName); } } else if (msg.body.winnerId) { if (msg.body.winnerId == this.account.id) { if (this.isSettai) { - text = serifs.reversi.iWonButSettai.replace('{name}', this.userName); + text = serifs.reversi.iWonButSettai(this.userName); } else { - text = serifs.reversi.iWon.replace('{name}', this.userName); + text = serifs.reversi.iWon(this.userName); } } else { if (this.isSettai) { - text = serifs.reversi.iLoseButSettai.replace('{name}', this.userName); + text = serifs.reversi.iLoseButSettai(this.userName); } else { - text = serifs.reversi.iLose.replace('{name}', this.userName); + text = serifs.reversi.iLose(this.userName); } } } else { if (this.isSettai) { - text = serifs.reversi.drawnSettai.replace('{name}', this.userName); + text = serifs.reversi.drawnSettai(this.userName); } else { - text = serifs.reversi.drawn.replace('{name}', this.userName); + text = serifs.reversi.drawn(this.userName); } } @@ -418,8 +418,8 @@ class Session { */ private postGameStarted = async () => { const text = this.isSettai - ? serifs.reversi.startedSettai.replace('{name}', this.userName) - : serifs.reversi.started.replace('{name}', this.userName).replace('{strength}', this.strength.toString()); + ? serifs.reversi.startedSettai(this.userName) + : serifs.reversi.started(this.userName, this.strength.toString()); return await this.post(`${text}\n→[観戦する](${this.url})`); } diff --git a/src/modules/timer/index.ts b/src/modules/timer/index.ts index 2ebd005..69f9a8c 100644 --- a/src/modules/timer/index.ts +++ b/src/modules/timer/index.ts @@ -37,7 +37,7 @@ export default class TimerModule implements IModule { setTimeout(() => { const name = msg.friend.name; this.ai.sendMessage(msg.userId, { - text: name ? serifs.timer.notifyWithName.replace('{time}', str).replace('{name}', name) : serifs.timer.notify.replace('{time}', str) + text: serifs.timer.notify(str, name) }); }, time); diff --git a/src/serifs.ts b/src/serifs.ts index 0b907ee..8f88525 100644 --- a/src/serifs.ts +++ b/src/serifs.ts @@ -1,27 +1,37 @@ export default { core: { - setNameOk: 'わかりました。これからは{name}とお呼びしますね!', + setNameOk: name => `わかりました。これからは${name}とお呼びしますね!`, + san: 'さん付けした方がいいですか?', + yesOrNo: '「はい」か「いいえ」しかわからないんです...', - hello: 'こんにちは♪', - helloWithName: 'こんにちは、{name}♪', - goodMorning: 'おはようございます!', - goodMorningWithName: 'おはようございます、{name}!', - goodNight: 'おやすみなさい!', - goodNightWithName: 'おやすみなさい、{name}!', + + hello: name => name ? `こんにちは、${name}♪` : `こんにちは♪`, + + goodMorning: name => name ? `おはようございます、${name}!` : 'おはようございます!', + + goodNight: name => name ? `おやすみなさい、${name}!` : 'おやすみなさい!', + tooLong: '長すぎる気がします...', + invalidName: '発音が難しい気がします', + requireMoreLove: 'もっと仲良くなったら考えてあげてもいいですよ?', - happyBirthday: 'お誕生日おめでとうございます🎉', - happyBirthdayWithName: 'お誕生日おめでとうございます、{name}🎉', + + happyBirthday: name => name ? `お誕生日おめでとうございます、${name}🎉` : 'お誕生日おめでとうございます🎉', + nadenade1: '…っ! びっくりしました', + nadenade2: 'わわっ… 恥ずかしいです', + nadenade3: 'ん… ありがとうございます♪', + kawaii: 'ありがとうございます♪' }, keyword: { learned: '({word}..... {reading}..... 覚えました)', + remembered: '{reading}!' }, @@ -42,52 +52,52 @@ export default { /** * 対局開始 */ - started: '対局を{name}と始めました! (強さ{strength})', + started: (name, strength) => `対局を${name}と始めました! (強さ${strength})`, /** * 接待開始 */ - startedSettai: '({name}の接待を始めました)', + startedSettai: name => `(${name}の接待を始めました)`, /** * 勝ったとき */ - iWon: '{name}に勝ちました♪', + iWon: name => `${name}に勝ちました♪`, /** * 接待のつもりが勝ってしまったとき */ - iWonButSettai: '({name}に接待で勝ってしまいました...)', + iWonButSettai: name => `(${name}に接待で勝ってしまいました...)`, /** * 負けたとき */ - iLose: '{name}に負けました...', + iLose: name => `${name}に負けました...`, /** * 接待で負けてあげたとき */ - iLoseButSettai: '({name}に接待で負けてあげました...♪)', + iLoseButSettai: name => `(${name}に接待で負けてあげました...♪)`, /** * 引き分けたとき */ - drawn: '{name}と引き分けました~', + drawn: name => `${name}と引き分けました~`, /** * 接待で引き分けたとき */ - drawnSettai: '({name}に接待で引き分けました...)', + drawnSettai: name => `(${name}に接待で引き分けました...)`, /** * 相手が投了したとき */ - youSurrendered: '{name}が投了しちゃいました', + youSurrendered: name => `${name}が投了しちゃいました`, /** * 接待してたら相手が投了したとき */ - settaiButYouSurrendered: '({name}を接待していたら投了されちゃいました... ごめんなさい)', + settaiButYouSurrendered: name => `(${name}を接待していたら投了されちゃいました... ごめんなさい)`, }, /** @@ -122,34 +132,34 @@ export default { /** * 小さい数を言われたとき */ - grater: '$より大きいですね', + grater: num => `${num}より大きいですね`, /** * 小さい数を言われたとき(2度目) */ - graterAgain: 'もう一度言いますが$より大きいですよ!', + graterAgain: num => `もう一度言いますが${num}より大きいですよ!`, /** * 大きい数を言われたとき */ - less: '$より小さいですね', + less: num => `${num}より小さいですね`, /** * 大きい数を言われたとき(2度目) */ - lessAgain: 'もう一度言いますが$より小さいですよ!', + lessAgain: num => `もう一度言いますが${num}より小さいですよ!`, /** * 正解したとき */ - congrats: '正解です🎉 ({tries}回目で当てました)', + congrats: tries => `正解です🎉 (${tries}回目で当てました)`, }, /** * 絵文字生成 */ emoji: { - suggest: 'こんなのはどうですか?→$', + suggest: emoji => `こんなのはどうですか?→${emoji}`, }, /** @@ -164,8 +174,9 @@ export default { */ timer: { set: 'わかりました!', + invalid: 'うーん...?', - notify: '{time}経ちましたよ!', - notifyWithName: '{name}、{time}経ちましたよ!' + + notify: (time, name) => name ? `${name}、${time}経ちましたよ!` : `${time}経ちましたよ!` } };