mirror of
https://github.com/syuilo/ai.git
synced 2024-11-09 23:48:01 +00:00
nannka
This commit is contained in:
parent
ba0a99b072
commit
fa0ebcdb8f
|
@ -3,7 +3,7 @@ import 藍 from './ai';
|
||||||
import IModule from './module';
|
import IModule from './module';
|
||||||
import getDate from './utils/get-date';
|
import getDate from './utils/get-date';
|
||||||
import { User } from './misskey/user';
|
import { User } from './misskey/user';
|
||||||
import { itemPrefixes, items, and } from './vocabulary';
|
import { genItem } from './vocabulary';
|
||||||
|
|
||||||
export type FriendDoc = {
|
export type FriendDoc = {
|
||||||
userId: string;
|
userId: string;
|
||||||
|
@ -142,12 +142,7 @@ export default class Friend {
|
||||||
|
|
||||||
@autobind
|
@autobind
|
||||||
public generateTransferCode(): string {
|
public generateTransferCode(): string {
|
||||||
let code = '';
|
const code = genItem();
|
||||||
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)];
|
|
||||||
|
|
||||||
this.doc.transferCode = code;
|
this.doc.transferCode = code;
|
||||||
this.save();
|
this.save();
|
||||||
|
|
|
@ -28,6 +28,7 @@ import ValentineModule from './modules/valentine';
|
||||||
import MazeModule from './modules/maze';
|
import MazeModule from './modules/maze';
|
||||||
import ChartModule from './modules/chart';
|
import ChartModule from './modules/chart';
|
||||||
import SleepReportModule from './modules/sleep-report';
|
import SleepReportModule from './modules/sleep-report';
|
||||||
|
import NotingModule from './modules/noting';
|
||||||
|
|
||||||
console.log(' __ ____ _____ ___ ');
|
console.log(' __ ____ _____ ___ ');
|
||||||
console.log(' /__\\ (_ _)( _ )/ __)');
|
console.log(' /__\\ (_ _)( _ )/ __)');
|
||||||
|
@ -79,6 +80,7 @@ promiseRetry(retry => {
|
||||||
new MazeModule(),
|
new MazeModule(),
|
||||||
new ChartModule(),
|
new ChartModule(),
|
||||||
new SleepReportModule(),
|
new SleepReportModule(),
|
||||||
|
new NotingModule(),
|
||||||
]);
|
]);
|
||||||
}).catch(e => {
|
}).catch(e => {
|
||||||
log(chalk.red('Failed to fetch the account'));
|
log(chalk.red('Failed to fetch the account'));
|
||||||
|
|
|
@ -3,7 +3,21 @@ import Module from '../../module';
|
||||||
import Message from '../../message';
|
import Message from '../../message';
|
||||||
import serifs from '../../serifs';
|
import serifs from '../../serifs';
|
||||||
import * as seedrandom from 'seedrandom';
|
import * as seedrandom from 'seedrandom';
|
||||||
import { blessing, itemPrefixes, items, and } from '../../vocabulary';
|
import { genItem } from '../../vocabulary';
|
||||||
|
|
||||||
|
export const blessing = [
|
||||||
|
'藍吉',
|
||||||
|
'ギガ吉',
|
||||||
|
'メガ吉',
|
||||||
|
'超吉',
|
||||||
|
'大大吉',
|
||||||
|
'大吉',
|
||||||
|
'吉',
|
||||||
|
'中吉',
|
||||||
|
'小吉',
|
||||||
|
'凶',
|
||||||
|
'大凶',
|
||||||
|
];
|
||||||
|
|
||||||
export default class extends Module {
|
export default class extends Module {
|
||||||
public readonly name = 'fortune';
|
public readonly name = 'fortune';
|
||||||
|
@ -22,14 +36,7 @@ export default class extends Module {
|
||||||
const seed = `${date.getFullYear()}/${date.getMonth()}/${date.getDate()}@${msg.userId}`;
|
const seed = `${date.getFullYear()}/${date.getMonth()}/${date.getDate()}@${msg.userId}`;
|
||||||
const rng = seedrandom(seed);
|
const rng = seedrandom(seed);
|
||||||
const omikuji = blessing[Math.floor(rng() * blessing.length)];
|
const omikuji = blessing[Math.floor(rng() * blessing.length)];
|
||||||
let item = '';
|
const item = genItem(rng);
|
||||||
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)];
|
|
||||||
}
|
|
||||||
msg.reply(`**${omikuji}🎉**\nラッキーアイテム: ${item}`, serifs.fortune.cw(msg.friend.name));
|
msg.reply(`**${omikuji}🎉**\nラッキーアイテム: ${item}`, serifs.fortune.cw(msg.friend.name));
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
|
40
src/modules/noting/index.ts
Normal file
40
src/modules/noting/index.ts
Normal 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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -360,6 +360,52 @@ export default {
|
||||||
report: hours => `んぅ、${hours}時間くらい寝ちゃってたみたいです`,
|
report: hours => `んぅ、${hours}時間くらい寝ちゃってたみたいです`,
|
||||||
reportUtatane: 'ん... うたた寝しちゃってました',
|
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 {
|
export function getSerif(variant: string | string[]): string {
|
||||||
|
|
|
@ -1,16 +1,4 @@
|
||||||
export const blessing = [
|
import * as seedrandom from 'seedrandom';
|
||||||
'藍吉',
|
|
||||||
'ギガ吉',
|
|
||||||
'メガ吉',
|
|
||||||
'超吉',
|
|
||||||
'大大吉',
|
|
||||||
'大吉',
|
|
||||||
'吉',
|
|
||||||
'中吉',
|
|
||||||
'小吉',
|
|
||||||
'凶',
|
|
||||||
'大凶',
|
|
||||||
];
|
|
||||||
|
|
||||||
export const itemPrefixes = [
|
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;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue