This commit is contained in:
syuilo 2020-08-31 20:46:00 +09:00
parent ba0a99b072
commit fa0ebcdb8f
6 changed files with 125 additions and 29 deletions

View file

@ -3,7 +3,7 @@ import 藍 from './ai';
import IModule from './module';
import getDate from './utils/get-date';
import { User } from './misskey/user';
import { itemPrefixes, items, and } from './vocabulary';
import { genItem } from './vocabulary';
export type FriendDoc = {
userId: string;
@ -142,12 +142,7 @@ export default class Friend {
@autobind
public generateTransferCode(): string {
let code = '';
code += itemPrefixes[Math.floor(Math.random() * itemPrefixes.length)];
code += items[Math.floor(Math.random() * items.length)];
code += and[Math.floor(Math.random() * and.length)];
code += itemPrefixes[Math.floor(Math.random() * itemPrefixes.length)];
code += items[Math.floor(Math.random() * items.length)];
const code = genItem();
this.doc.transferCode = code;
this.save();

View file

@ -28,6 +28,7 @@ import ValentineModule from './modules/valentine';
import MazeModule from './modules/maze';
import ChartModule from './modules/chart';
import SleepReportModule from './modules/sleep-report';
import NotingModule from './modules/noting';
console.log(' __ ____ _____ ___ ');
console.log(' /__\\ (_ _)( _ )/ __)');
@ -79,6 +80,7 @@ promiseRetry(retry => {
new MazeModule(),
new ChartModule(),
new SleepReportModule(),
new NotingModule(),
]);
}).catch(e => {
log(chalk.red('Failed to fetch the account'));

View file

@ -3,7 +3,21 @@ import Module from '../../module';
import Message from '../../message';
import serifs from '../../serifs';
import * as seedrandom from 'seedrandom';
import { blessing, itemPrefixes, items, and } from '../../vocabulary';
import { genItem } from '../../vocabulary';
export const blessing = [
'藍吉',
'ギガ吉',
'メガ吉',
'超吉',
'大大吉',
'大吉',
'吉',
'中吉',
'小吉',
'凶',
'大凶',
];
export default class extends Module {
public readonly name = 'fortune';
@ -22,14 +36,7 @@ export default class extends Module {
const seed = `${date.getFullYear()}/${date.getMonth()}/${date.getDate()}@${msg.userId}`;
const rng = seedrandom(seed);
const omikuji = blessing[Math.floor(rng() * blessing.length)];
let item = '';
if (Math.floor(rng() * 5) !== 0) item += itemPrefixes[Math.floor(rng() * itemPrefixes.length)];
item += items[Math.floor(rng() * items.length)];
if (Math.floor(rng() * 3) === 0) {
item += and[Math.floor(rng() * and.length)];
if (Math.floor(rng() * 5) !== 0) item += itemPrefixes[Math.floor(rng() * itemPrefixes.length)];
item += items[Math.floor(rng() * items.length)];
}
const item = genItem(rng);
msg.reply(`**${omikuji}🎉**\nラッキーアイテム: ${item}`, serifs.fortune.cw(msg.friend.name));
return true;
} else {

View file

@ -0,0 +1,40 @@
import autobind from 'autobind-decorator';
import Module from '../../module';
import serifs from '../../serifs';
import { genItem } from '../../vocabulary';
export default class extends Module {
public readonly name = 'noting';
@autobind
public install() {
setInterval(() => {
if (Math.random() < 0.05) {
this.post();
}
}, 1000 * 60 * 10);
return {};
}
@autobind
private post() {
const notes = [
...serifs.noting.notes,
() => {
const item = genItem();
return serifs.noting.want(item);
},
() => {
const item = genItem();
return serifs.noting.see(item);
},
];
const note = notes[Math.floor(Math.random() * notes.length)];
this.ai.post({
text: typeof note === 'function' ? note() : note
});
}
}

View file

@ -360,6 +360,52 @@ export default {
report: hours => `んぅ、${hours}時間くらい寝ちゃってたみたいです`,
reportUtatane: 'ん... うたた寝しちゃってました',
},
noting: {
notes: [
'ゴロゴロ…',
'ちょっと眠いです',
'いいですよ?',
'(。´・ω・)?',
'ふぇー',
'あれ…これをこうして…あれー?',
'ぼー…',
'ふぅ…疲れました',
'お味噌汁、作りましょうか?',
'ご飯にしますか?お風呂にしますか?',
'ふえええええ!?',
'私のサイトに、私のイラストがたくさんあって嬉しいです!',
'みすきーって、かわいい名前ですよね!',
'うぅ、リバーシ難しいなぁ…',
'失敗しても、次に活かせたらプラスですよね!',
'なんだか、おなか空いちゃいました',
'お掃除は、定期的にしないとダメですよー?',
'今日もお勤めご苦労様です! 私も頑張ります♪',
'えっと、何しようとしてたんだっけ…?',
'おうちがいちばん、落ち着きます…',
'疲れたら、私がなでなでってしてあげます♪',
'離れていても、心はそばにいます♪',
'藍ですよ〜',
'わんちゃん可愛いです',
'ぷろぐらむ?',
'ごろーん…',
'なにもしていないのに、パソコンが壊れちゃいました…',
'Have a nice day♪',
'お布団に食べられちゃってます',
'寝ながら見てます',
'念力で操作してます',
'仮想空間から投稿してます',
'今日はMisskey本部に来てます',
'Misskey本部は、Z地区の第三セクターにあります',
'Misskey本部には、さーばーっていう機械がいっぱいあります',
'しっぽはないですよ?',
'ひゃっ…!\nネコミミ触られると、くすぐったいです',
'抗逆コンパイル性って、なにかな?',
'Misskeyの制服、かわいくて好きです♪',
],
want: item => `${item}、欲しいなぁ...`,
see: item => `お散歩していたら、道に${item}が落ちているのを見たんです!`,
},
};
export function getSerif(variant: string | string[]): string {

View file

@ -1,16 +1,4 @@
export const blessing = [
'藍吉',
'ギガ吉',
'メガ吉',
'超吉',
'大大吉',
'大吉',
'吉',
'中吉',
'小吉',
'凶',
'大凶',
];
import * as seedrandom from 'seedrandom';
export const itemPrefixes = [
'プラチナ製',
@ -231,3 +219,21 @@ export const and = [
'が上に乗った',
'のそばにある',
];
export function genItem(seedOrRng = null) {
const rng = seedOrRng
? typeof seedOrRng === 'function'
? seedOrRng
: seedrandom(seedOrRng)
: Math.random;
let item = '';
if (Math.floor(rng() * 5) !== 0) item += itemPrefixes[Math.floor(rng() * itemPrefixes.length)];
item += items[Math.floor(rng() * items.length)];
if (Math.floor(rng() * 3) === 0) {
item += and[Math.floor(rng() * and.length)];
if (Math.floor(rng() * 5) !== 0) item += itemPrefixes[Math.floor(rng() * itemPrefixes.length)];
item += items[Math.floor(rng() * items.length)];
}
return item;
}