mirror of
https://github.com/syuilo/ai.git
synced 2024-11-22 13:17:59 +00:00
Refactor
This commit is contained in:
parent
668ea62724
commit
87f6729c98
11
src/ai.ts
11
src/ai.ts
|
@ -123,17 +123,6 @@ export default class 藍 {
|
||||||
this.modules.push(module);
|
this.modules.push(module);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 指定したユーザーの「呼んでもらいたい名前」を取得します
|
|
||||||
*/
|
|
||||||
public getName = (userId: string) => {
|
|
||||||
const friend = this.friends.findOne({
|
|
||||||
userId: userId
|
|
||||||
});
|
|
||||||
|
|
||||||
return friend != null ? friend.name : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private onMessage = (msg: any) => {
|
private onMessage = (msg: any) => {
|
||||||
switch (msg.type) {
|
switch (msg.type) {
|
||||||
// メンションされたとき
|
// メンションされたとき
|
||||||
|
|
|
@ -26,10 +26,22 @@ export default class MessageLike {
|
||||||
return this.messageOrNote.replyId;
|
return this.messageOrNote.replyId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public friend: ReturnType<藍['friends']['findOne']>;
|
||||||
|
|
||||||
constructor(ai: 藍, messageOrNote: any, isMessage: boolean) {
|
constructor(ai: 藍, messageOrNote: any, isMessage: boolean) {
|
||||||
this.ai = ai;
|
this.ai = ai;
|
||||||
this.messageOrNote = messageOrNote;
|
this.messageOrNote = messageOrNote;
|
||||||
this.isMessage = isMessage;
|
this.isMessage = isMessage;
|
||||||
|
|
||||||
|
this.friend = this.ai.friends.findOne({
|
||||||
|
userId: this.userId
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this.friend == null) {
|
||||||
|
this.friend = this.ai.friends.insertOne({
|
||||||
|
userId: this.userId
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public reply = async (text: string, cw?: string) => {
|
public reply = async (text: string, cw?: string) => {
|
||||||
|
|
|
@ -16,16 +16,6 @@ export default class CoreModule implements IModule {
|
||||||
if (!msg.text) return false;
|
if (!msg.text) return false;
|
||||||
|
|
||||||
if (msg.text.includes('って呼んで') && !msg.text.startsWith('って呼んで')) {
|
if (msg.text.includes('って呼んで') && !msg.text.startsWith('って呼んで')) {
|
||||||
let friend = this.ai.friends.findOne({
|
|
||||||
userId: msg.userId
|
|
||||||
});
|
|
||||||
|
|
||||||
if (friend == null) {
|
|
||||||
friend = this.ai.friends.insertOne({
|
|
||||||
userId: msg.userId
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const name = msg.text.match(/^(.+?)って呼んで/)[1];
|
const name = msg.text.match(/^(.+?)って呼んで/)[1];
|
||||||
|
|
||||||
if (name.length > 10) {
|
if (name.length > 10) {
|
||||||
|
@ -41,13 +31,12 @@ export default class CoreModule implements IModule {
|
||||||
name.endsWith('様');
|
name.endsWith('様');
|
||||||
|
|
||||||
if (withSan) {
|
if (withSan) {
|
||||||
friend.name = name;
|
msg.friend.name = name;
|
||||||
this.ai.friends.update(friend);
|
this.ai.friends.update(msg.friend);
|
||||||
msg.reply(serifs.core.setNameOk.replace('{name}', name));
|
msg.reply(serifs.core.setNameOk.replace('{name}', name));
|
||||||
} else {
|
} else {
|
||||||
msg.reply(serifs.core.san).then(reply => {
|
msg.reply(serifs.core.san).then(reply => {
|
||||||
this.ai.subscribeReply(this, msg.userId, msg.isMessage, msg.isMessage ? msg.userId : reply.id, {
|
this.ai.subscribeReply(this, msg.userId, msg.isMessage, msg.isMessage ? msg.userId : reply.id, {
|
||||||
friend: friend,
|
|
||||||
name: name
|
name: name
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -55,24 +44,16 @@ export default class CoreModule implements IModule {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else if (msg.text.includes('おはよう')) {
|
} else if (msg.text.includes('おはよう')) {
|
||||||
const friend = this.ai.friends.findOne({
|
if (msg.friend.name) {
|
||||||
userId: msg.userId
|
msg.reply(serifs.core.goodMorningWithName.replace('{name}', msg.friend.name));
|
||||||
});
|
|
||||||
|
|
||||||
if (friend && friend.name) {
|
|
||||||
msg.reply(serifs.core.goodMorningWithName.replace('{name}', friend.name));
|
|
||||||
} else {
|
} else {
|
||||||
msg.reply(serifs.core.goodMorning);
|
msg.reply(serifs.core.goodMorning);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else if (msg.text.includes('おやすみ')) {
|
} else if (msg.text.includes('おやすみ')) {
|
||||||
const friend = this.ai.friends.findOne({
|
if (msg.friend.name) {
|
||||||
userId: msg.userId
|
msg.reply(serifs.core.goodNightWithName.replace('{name}', msg.friend.name));
|
||||||
});
|
|
||||||
|
|
||||||
if (friend && friend.name) {
|
|
||||||
msg.reply(serifs.core.goodNightWithName.replace('{name}', friend.name));
|
|
||||||
} else {
|
} else {
|
||||||
msg.reply(serifs.core.goodNight);
|
msg.reply(serifs.core.goodNight);
|
||||||
}
|
}
|
||||||
|
@ -87,16 +68,16 @@ export default class CoreModule implements IModule {
|
||||||
if (msg.text == null) return;
|
if (msg.text == null) return;
|
||||||
|
|
||||||
const done = () => {
|
const done = () => {
|
||||||
this.ai.friends.update(data.friend);
|
this.ai.friends.update(msg.friend);
|
||||||
msg.reply(serifs.core.setNameOk.replace('{name}', data.friend.name));
|
msg.reply(serifs.core.setNameOk.replace('{name}', msg.friend.name));
|
||||||
this.ai.unsubscribeReply(this, msg.userId);
|
this.ai.unsubscribeReply(this, msg.userId);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (msg.text.includes('はい')) {
|
if (msg.text.includes('はい')) {
|
||||||
data.friend.name = data.name + 'さん';
|
msg.friend.name = data.name + 'さん';
|
||||||
done();
|
done();
|
||||||
} else if (msg.text.includes('いいえ')) {
|
} else if (msg.text.includes('いいえ')) {
|
||||||
data.friend.name = data.name;
|
msg.friend.name = data.name;
|
||||||
done();
|
done();
|
||||||
} else {
|
} else {
|
||||||
msg.reply(serifs.core.yesOrNo).then(reply => {
|
msg.reply(serifs.core.yesOrNo).then(reply => {
|
||||||
|
|
|
@ -35,7 +35,7 @@ export default class TimerModule implements IModule {
|
||||||
const str = `${hours ? hoursQuery[0] : ''}${minutes ? minutesQuery[0] : ''}${seconds ? secondsQuery[0] : ''}`;
|
const str = `${hours ? hoursQuery[0] : ''}${minutes ? minutesQuery[0] : ''}${seconds ? secondsQuery[0] : ''}`;
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
const name = this.ai.getName(msg.userId);
|
const name = msg.friend.name;
|
||||||
this.ai.sendMessage(msg.userId, {
|
this.ai.sendMessage(msg.userId, {
|
||||||
text: name ? serifs.timer.notifyWithName.replace('{time}', str).replace('{name}', name) : serifs.timer.notify.replace('{time}', str)
|
text: name ? serifs.timer.notifyWithName.replace('{time}', str).replace('{name}', name) : serifs.timer.notify.replace('{time}', str)
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue