ai/src/message-like.ts

65 lines
1.3 KiB
TypeScript
Raw Normal View History

2018-08-11 06:26:25 +00:00
import from './ai';
2018-08-27 11:22:59 +00:00
import Friend from './friend';
const delay = require('timeout-as-promise');
2018-08-11 01:42:06 +00:00
export default class MessageLike {
private ai: ;
private messageOrNote: any;
public isMessage: boolean;
public get id() {
return this.messageOrNote.id;
}
public get user() {
return this.messageOrNote.user;
}
2018-08-11 01:42:06 +00:00
public get userId() {
return this.messageOrNote.userId;
}
public get text() {
return this.messageOrNote.text;
}
public get replyId() {
return this.messageOrNote.replyId;
}
2018-08-27 11:22:59 +00:00
public friend: Friend;
2018-08-27 10:04:09 +00:00
2018-08-11 01:42:06 +00:00
constructor(ai: , messageOrNote: any, isMessage: boolean) {
this.ai = ai;
this.messageOrNote = messageOrNote;
this.isMessage = isMessage;
2018-08-27 10:04:09 +00:00
2018-08-27 11:22:59 +00:00
this.friend = new Friend(ai, { user: this.user });
// メッセージなどに付いているユーザー情報は省略されている場合があるので完全なユーザー情報を持ってくる
this.ai.api('users/show', {
2018-08-27 10:04:09 +00:00
userId: this.userId
2018-08-27 11:22:59 +00:00
}).then(user => {
this.friend.updateUser(user);
2018-08-27 10:04:09 +00:00
});
2018-08-11 01:42:06 +00:00
}
public reply = async (text: string, cw?: string) => {
2018-08-11 03:34:24 +00:00
console.log(`sending reply of ${this.id} ...`);
await delay(2000);
if (this.isMessage) {
return await this.ai.sendMessage(this.messageOrNote.userId, {
text: text
});
} else {
return await this.ai.post({
replyId: this.messageOrNote.id,
text: text,
cw: cw
});
}
2018-08-11 01:42:06 +00:00
}
}