mirror of
https://github.com/syuilo/ai.git
synced 2024-11-22 05:08:00 +00:00
Improve reminder
This commit is contained in:
parent
4482cceffe
commit
f36a63c23e
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_v": "1.4.1",
|
"_v": "1.4.2",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node ./built",
|
"start": "node ./built",
|
||||||
|
|
|
@ -2,8 +2,9 @@ import autobind from 'autobind-decorator';
|
||||||
import * as loki from 'lokijs';
|
import * as loki from 'lokijs';
|
||||||
import Module from '@/module';
|
import Module from '@/module';
|
||||||
import Message from '@/message';
|
import Message from '@/message';
|
||||||
import serifs from '@/serifs';
|
import serifs, { getSerif } from '@/serifs';
|
||||||
import { acct } from '@/utils/acct';
|
import { acct } from '@/utils/acct';
|
||||||
|
import config from '@/config';
|
||||||
|
|
||||||
const NOTIFY_INTERVAL = 1000 * 60 * 60 * 12;
|
const NOTIFY_INTERVAL = 1000 * 60 * 60 * 12;
|
||||||
|
|
||||||
|
@ -37,6 +38,18 @@ export default class extends Module {
|
||||||
private async mentionHook(msg: Message) {
|
private async mentionHook(msg: Message) {
|
||||||
let text = msg.extractedText.toLowerCase();
|
let text = msg.extractedText.toLowerCase();
|
||||||
if (!text.startsWith('remind') && !text.startsWith('todo')) return false;
|
if (!text.startsWith('remind') && !text.startsWith('todo')) return false;
|
||||||
|
|
||||||
|
if (text.startsWith('reminds') || text.startsWith('todos')) {
|
||||||
|
const reminds = this.reminds.find({
|
||||||
|
userId: msg.userId,
|
||||||
|
});
|
||||||
|
|
||||||
|
const getQuoteLink = id => `[${id}](${config.host}/notes/${id})`;
|
||||||
|
|
||||||
|
msg.reply(serifs.reminder.reminds + '\n' + reminds.map(remind => `・${remind.thing ? remind.thing : getQuoteLink(remind.quoteId)}`).join('\n'));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (text.match(/^(.+?)\s(.+)/)) {
|
if (text.match(/^(.+?)\s(.+)/)) {
|
||||||
text = text.replace(/^(.+?)\s/, '');
|
text = text.replace(/^(.+?)\s/, '');
|
||||||
} else {
|
} else {
|
||||||
|
@ -61,13 +74,21 @@ export default class extends Module {
|
||||||
createdAt: Date.now(),
|
createdAt: Date.now(),
|
||||||
});
|
});
|
||||||
|
|
||||||
this.subscribeReply(msg.id, msg.isDm, msg.isDm ? msg.userId : msg.id, {
|
// メンションをsubscribe
|
||||||
|
this.subscribeReply(remind!.id, msg.isDm, msg.isDm ? msg.userId : msg.id, {
|
||||||
id: remind!.id
|
id: remind!.id
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (msg.quoteId) {
|
||||||
|
// 引用元をsubscribe
|
||||||
|
this.subscribeReply(remind!.id, false, msg.quoteId, {
|
||||||
|
id: remind!.id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// タイマーセット
|
// タイマーセット
|
||||||
this.setTimeoutWithPersistence(NOTIFY_INTERVAL, {
|
this.setTimeoutWithPersistence(NOTIFY_INTERVAL, {
|
||||||
id: msg.id,
|
id: remind!.id,
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -89,13 +110,13 @@ export default class extends Module {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const done = msg.includes(['done', 'やった']);
|
const done = msg.includes(['done', 'やった', 'やりました', 'はい']);
|
||||||
const cancel = msg.includes(['やめる']);
|
const cancel = msg.includes(['やめる', 'やめた', 'キャンセル']);
|
||||||
|
|
||||||
if (done || cancel) {
|
if (done || cancel) {
|
||||||
this.unsubscribeReply(key);
|
this.unsubscribeReply(key);
|
||||||
this.reminds.remove(remind);
|
this.reminds.remove(remind);
|
||||||
msg.reply(done ? serifs.reminder.done(msg.friend.name) : serifs.reminder.cancel);
|
msg.reply(done ? getSerif(serifs.reminder.done(msg.friend.name)) : serifs.reminder.cancel);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
if (msg.isDm) this.unsubscribeReply(key);
|
if (msg.isDm) this.unsubscribeReply(key);
|
||||||
|
|
|
@ -341,11 +341,21 @@ export default {
|
||||||
reminder: {
|
reminder: {
|
||||||
invalid: 'うーん...?',
|
invalid: 'うーん...?',
|
||||||
|
|
||||||
|
reminds: 'やること一覧です!',
|
||||||
|
|
||||||
notify: (name) => name ? `${name}、これやりましたか?` : `これやりましたか?`,
|
notify: (name) => name ? `${name}、これやりましたか?` : `これやりましたか?`,
|
||||||
|
|
||||||
notifyWithThing: (thing, name) => name ? `${name}、「${thing}」やりましたか?` : `「${thing}」やりましたか?`,
|
notifyWithThing: (thing, name) => name ? `${name}、「${thing}」やりましたか?` : `「${thing}」やりましたか?`,
|
||||||
|
|
||||||
done: (name) => name ? `よく出来ました、${name}♪` : `よく出来ました♪`,
|
done: (name) => name ? [
|
||||||
|
`よく出来ました、${name}♪`,
|
||||||
|
`${name}、さすがですっ!`,
|
||||||
|
`${name}、えらすぎます...!`,
|
||||||
|
] : [
|
||||||
|
`よく出来ました♪`,
|
||||||
|
`さすがですっ!`,
|
||||||
|
`えらすぎます...!`,
|
||||||
|
],
|
||||||
|
|
||||||
cancel: `わかりました。`,
|
cancel: `わかりました。`,
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue