記憶を永続化するなど

This commit is contained in:
syuilo
2018-08-27 06:16:56 +09:00
parent 1dc0bf27e9
commit d30a98bf2e
5 changed files with 60 additions and 40 deletions

View File

@ -30,7 +30,7 @@ export default class FortuneModule implements IModule {
public install = (ai: ) => { }
public onMention = (msg: MessageLike) => {
if (msg.text && (msg.text.includes('占') || msg.text.includes('運勢'))) {
if (msg.text && (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);

View File

@ -1,31 +1,37 @@
import * as loki from 'lokijs';
import from '../../ai';
import IModule from '../../module';
import MessageLike from '../../message-like';
import serifs from '../../serifs';
import db from '../../memory';
export const guesses = db.addCollection<{
userId: string;
secret: number;
tries: number[];
isEnded: boolean;
startedAt: number;
endedAt: number;
}>('guessingGame', {
indices: ['userId']
});
export default class GuessingGameModule implements IModule {
public name = 'guessingGame';
private ai: ;
private guesses: loki.Collection<{
userId: string;
secret: number;
tries: number[];
isEnded: boolean;
startedAt: number;
endedAt: number;
}>;
public install = (ai: ) => {
this.ai = ai;
//#region Init DB
this.guesses = this.ai.db.getCollection('guessingGame');
if (this.guesses === null) {
this.guesses = this.ai.db.addCollection('guessingGame', {
indices: ['userId']
});
}
//#endregion
}
public onMention = (msg: MessageLike) => {
if (msg.text && (msg.text.includes('数当て') || msg.text.includes('数あて'))) {
const exist = guesses.findOne({
const exist = this.guesses.findOne({
userId: msg.userId,
isEnded: false
});
@ -42,7 +48,7 @@ export default class GuessingGameModule implements IModule {
const secret = Math.floor(Math.random() * 100);
guesses.insertOne({
this.guesses.insertOne({
userId: msg.userId,
secret: secret,
tries: [],
@ -64,7 +70,7 @@ export default class GuessingGameModule implements IModule {
public onReplyThisModule = (msg: MessageLike) => {
if (msg.text == null) return;
const exist = guesses.findOne({
const exist = this.guesses.findOne({
userId: msg.userId,
isEnded: false
});
@ -73,7 +79,7 @@ export default class GuessingGameModule implements IModule {
msg.reply(serifs.GUESSINGGAME_CANCEL);
exist.isEnded = true;
exist.endedAt = Date.now();
guesses.update(exist);
this.guesses.update(exist);
this.ai.unsubscribeReply(this, msg.userId);
return;
}
@ -115,7 +121,7 @@ export default class GuessingGameModule implements IModule {
this.ai.unsubscribeReply(this, msg.userId);
}
guesses.update(exist);
this.guesses.update(exist);
msg.reply(text).then(reply => {
if (!end) {