mirror of
https://github.com/syuilo/ai.git
synced 2024-11-21 20:58:00 +00:00
リマインド機能の改善 (#93)
* [reminder]renote対象が消されていた場合にリマインダー解除を行う機能の追加 * [reminder]visibilityがfollowersのときにtodoを受け付けないようにした * #70(他人のリマインダーを操作できる)対応 * セリフのベタ書きではなく、serifsに追加するような形にした。 * Fix[Reminder]RN対象の削除がなされていた場合へ入る条件分岐の修正
This commit is contained in:
parent
bc2c7f0581
commit
5cd9e171da
|
@ -34,6 +34,10 @@ export default class Message {
|
||||||
return this.messageOrNote.renoteId;
|
return this.messageOrNote.renoteId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public get visibility(): string {
|
||||||
|
return this.messageOrNote.visibility;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* メンション部分を除いたテキスト本文
|
* メンション部分を除いたテキスト本文
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -59,9 +59,12 @@ export default class extends Module {
|
||||||
const separatorIndex = text.indexOf(' ') > -1 ? text.indexOf(' ') : text.indexOf('\n');
|
const separatorIndex = text.indexOf(' ') > -1 ? text.indexOf(' ') : text.indexOf('\n');
|
||||||
const thing = text.substr(separatorIndex + 1).trim();
|
const thing = text.substr(separatorIndex + 1).trim();
|
||||||
|
|
||||||
if (thing === '' && msg.quoteId == null) {
|
if (thing === '' && msg.quoteId == null || msg.visibility === 'followers') {
|
||||||
msg.reply(serifs.reminder.invalid);
|
msg.reply(serifs.reminder.invalid);
|
||||||
return true;
|
return {
|
||||||
|
reaction: '🆖',
|
||||||
|
immediate: true,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const remind = this.reminds.insertOne({
|
const remind = this.reminds.insertOne({
|
||||||
|
@ -112,12 +115,16 @@ export default class extends Module {
|
||||||
|
|
||||||
const done = msg.includes(['done', 'やった', 'やりました', 'はい']);
|
const done = msg.includes(['done', 'やった', 'やりました', 'はい']);
|
||||||
const cancel = msg.includes(['やめる', 'やめた', 'キャンセル']);
|
const cancel = msg.includes(['やめる', 'やめた', 'キャンセル']);
|
||||||
|
const isOneself = msg.userId === remind.userId;
|
||||||
|
|
||||||
if (done || cancel) {
|
if ((done || cancel) && isOneself) {
|
||||||
this.unsubscribeReply(key);
|
this.unsubscribeReply(key);
|
||||||
this.reminds.remove(remind);
|
this.reminds.remove(remind);
|
||||||
msg.reply(done ? getSerif(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 if (isOneself === false) {
|
||||||
|
msg.reply(serifs.reminder.doneFromInvalidUser);
|
||||||
|
return;
|
||||||
} else {
|
} else {
|
||||||
if (msg.isDm) this.unsubscribeReply(key);
|
if (msg.isDm) this.unsubscribeReply(key);
|
||||||
return false;
|
return false;
|
||||||
|
@ -149,7 +156,12 @@ export default class extends Module {
|
||||||
text: acct(friend.doc.user) + ' ' + serifs.reminder.notify(friend.name)
|
text: acct(friend.doc.user) + ' ' + serifs.reminder.notify(friend.name)
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// TODO: renote対象が消されていたらリマインダー解除
|
// renote対象が消されていたらリマインダー解除
|
||||||
|
if (err.statusCode === 400) {
|
||||||
|
this.unsubscribeReply(remind.thing == null && remind.quoteId ? remind.quoteId : remind.id);
|
||||||
|
this.reminds.remove(remind);
|
||||||
|
return;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -339,6 +339,8 @@ export default {
|
||||||
reminder: {
|
reminder: {
|
||||||
invalid: 'うーん...?',
|
invalid: 'うーん...?',
|
||||||
|
|
||||||
|
doneFromInvalidUser: 'イタズラはめっですよ!',
|
||||||
|
|
||||||
reminds: 'やること一覧です!',
|
reminds: 'やること一覧です!',
|
||||||
|
|
||||||
notify: (name) => name ? `${name}、これやりましたか?` : `これやりましたか?`,
|
notify: (name) => name ? `${name}、これやりましたか?` : `これやりましたか?`,
|
||||||
|
|
Loading…
Reference in a new issue