Add dice module

This commit is contained in:
syuilo 2018-09-03 23:42:28 +09:00
parent 2786fb874e
commit 0d0872e615
3 changed files with 42 additions and 0 deletions

View file

@ -10,6 +10,7 @@ import GuessingGameModule from './modules/guessing-game';
import KeywordModule from './modules/keyword';
import WelcomeModule from './modules/welcome';
import TimerModule from './modules/timer';
import DiceModule from './modules/dice';
import ServerModule from './modules/server';
import * as request from 'request-promise-native';
@ -36,6 +37,7 @@ promiseRetry(retry => {
new GuessingGameModule(),
new ReversiModule(),
new TimerModule(),
new DiceModule(),
new ServerModule()
];

36
src/modules/dice/index.ts Normal file
View file

@ -0,0 +1,36 @@
import from '../../ai';
import IModule from '../../module';
import MessageLike from '../../message-like';
export default class DiceModule implements IModule {
public readonly name = 'dice';
private ai: ;
public install = (ai: ) => {
this.ai = ai;
}
public onMention = (msg: MessageLike) => {
if (msg.text == null) return false;
const query = msg.text.match(/([0-9]+)[dD]([0-9]+)/);
if (query == null) return false;
const times = parseInt(query[1], 10);
const dice = parseInt(query[2], 10);
if (times < 1 || times > 10) return false;
if (dice < 2 || dice > 1000) return false;
const results: number[] = [];
for (let i = 0; i < times; i++) {
results.push(Math.floor(Math.random() * dice) + 1);
}
msg.reply(results.join(' '));
return true;
}
}

View file

@ -22,6 +22,10 @@ Misskeyに24時間常駐している。AIなので睡眠は不要だが、たま
### 絵文字
藍に「絵文字」と言うと、藍が考えた絵文字の組み合わせを教えてくれます。
### サイコロ
ダイスノーテーションを伝えるとサイコロを振ってくれます。
例: "2d6" (6面サイコロを2回振る)、"3d5" (5面サイコロを3回振る)
### 数当てゲーム
藍にメッセージで「数当てゲーム」と言うと遊べます。
藍の考えている数字を当てるゲームです。