占い実装

This commit is contained in:
syuilo 2018-08-11 18:43:50 +09:00
parent e9a4ceec09
commit cc35412cb5
6 changed files with 61 additions and 2 deletions

10
package-lock.json generated
View file

@ -26,6 +26,11 @@
"resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.10.2.tgz", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.10.2.tgz",
"integrity": "sha512-LqJkY4VQ7S09XhI7kA3ON71AxauROhSv74639VsNXC9ish4IWHnIi98if+nP1MxQV3RMPqXSCYgpPsDHjlg9UQ==" "integrity": "sha512-LqJkY4VQ7S09XhI7kA3ON71AxauROhSv74639VsNXC9ish4IWHnIi98if+nP1MxQV3RMPqXSCYgpPsDHjlg9UQ=="
}, },
"@types/seedrandom": {
"version": "2.4.27",
"resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.27.tgz",
"integrity": "sha1-nbVjk33YaRX2kJK8QyWdL0hXjkE="
},
"@types/ws": { "@types/ws": {
"version": "5.1.2", "version": "5.1.2",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-5.1.2.tgz", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-5.1.2.tgz",
@ -461,6 +466,11 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
}, },
"seedrandom": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz",
"integrity": "sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw="
},
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",

View file

@ -7,12 +7,14 @@
"dependencies": { "dependencies": {
"@types/node": "10.0.5", "@types/node": "10.0.5",
"@types/promise-retry": "1.1.2", "@types/promise-retry": "1.1.2",
"@types/seedrandom": "2.4.27",
"@types/ws": "5.1.2", "@types/ws": "5.1.2",
"misskey-reversi": "0.0.5", "misskey-reversi": "0.0.5",
"promise-retry": "1.1.1", "promise-retry": "1.1.1",
"reconnecting-websocket": "4.0.0-rc5", "reconnecting-websocket": "4.0.0-rc5",
"request": "2.87.0", "request": "2.87.0",
"request-promise-native": "1.0.5", "request-promise-native": "1.0.5",
"seedrandom": "2.4.3",
"ts-node": "6.0.3", "ts-node": "6.0.3",
"typescript": "2.8.3", "typescript": "2.8.3",
"ws": "6.0.0" "ws": "6.0.0"

View file

@ -4,6 +4,7 @@ import ReversiModule from './modules/reversi';
import ServerModule from './modules/server'; import ServerModule from './modules/server';
import PingModule from './modules/ping'; import PingModule from './modules/ping';
import EmojiModule from './modules/emoji'; import EmojiModule from './modules/emoji';
import FortuneModule from './modules/fortune';
import * as request from 'request-promise-native'; import * as request from 'request-promise-native';
const promiseRetry = require('promise-retry'); const promiseRetry = require('promise-retry');
@ -18,6 +19,7 @@ promiseRetry(retry => {
ai.install(new PingModule()); ai.install(new PingModule());
ai.install(new EmojiModule()); ai.install(new EmojiModule());
ai.install(new FortuneModule());
ai.install(new ServerModule()); ai.install(new ServerModule());
ai.install(new ReversiModule()); ai.install(new ReversiModule());
}); });

View file

@ -23,7 +23,7 @@ export default class MessageLike {
this.isMessage = isMessage; this.isMessage = isMessage;
} }
public reply = (text: string) => { public reply = (text: string, cw?: string) => {
console.log(`sending reply of ${this.id} ...`); console.log(`sending reply of ${this.id} ...`);
setTimeout(() => { setTimeout(() => {
@ -34,7 +34,8 @@ export default class MessageLike {
} else { } else {
this.ai.post({ this.ai.post({
replyId: this.messageOrNote.id, replyId: this.messageOrNote.id,
text: text text: text,
cw: cw
}); });
} }
}, 2000); }, 2000);

View file

@ -0,0 +1,43 @@
import from '../../ai';
import IModule from '../../module';
import MessageLike from '../../message-like';
import serifs from '../../serifs';
import * as seedrandom from 'seedrandom';
const omikujis = [
'大大吉',
'大吉',
'吉',
'中吉',
'小吉',
'凶',
'大凶'
];
const items = [
'ナス',
'トマト',
'きゅうり',
'じゃがいも',
'焼きビーフン',
'腰',
'寿司'
];
export default class EmojiModule implements IModule {
public install = (ai: ) => { }
public onMention = (msg: MessageLike) => {
if (msg.text && msg.text.indexOf('占') > -1) {
const date = new Date();
const seed = `${date.getFullYear()}/${date.getMonth()}/${date.getDay()}@${msg.userId}`;
const rng = seedrandom(seed);
const omikuji = omikujis[Math.floor(rng() * omikujis.length)];
const item = items[Math.floor(rng() * items.length)];
msg.reply(`**${omikuji}🎉**\nラッキーアイテム: ${item}`, serifs.FORTUNE_CW);
return true;
} else {
return false;
}
}
}

View file

@ -25,4 +25,5 @@ export default {
*/ */
EMOJI_SUGGEST: 'こんなのはどうですか?→$', EMOJI_SUGGEST: 'こんなのはどうですか?→$',
FORTUNE_CW: '私が今日のあなたの運勢を占いました...'
}; };