diff --git a/src/index.ts b/src/index.ts index 4a17ed3..966c5c3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,6 +15,7 @@ import ServerModule from './modules/server'; import * as request from 'request-promise-native'; import IModule from './module'; +import FollowModule from './modules/follow'; const promiseRetry = require('promise-retry'); console.log('--- starting ai... ---'); @@ -38,7 +39,8 @@ promiseRetry(retry => { new CoreModule(), new PingModule(), new WelcomeModule(), - new ServerModule() + new ServerModule(), + new FollowModule(), ]; if (config.keywordEnabled) modules.push(new KeywordModule()); diff --git a/src/modules/follow/index.ts b/src/modules/follow/index.ts new file mode 100644 index 0000000..ad501bf --- /dev/null +++ b/src/modules/follow/index.ts @@ -0,0 +1,35 @@ +import 藍 from '../../ai'; +import IModule from '../../module'; +import MessageLike from '../../message-like'; +import serifs from '../../serifs'; + +export default class FollowModule implements IModule { + public readonly name = 'follow'; + private ai: 藍; + + public install = (ai: 藍) => { + this.ai = ai; + } + + public onMention = (msg: MessageLike) => { + if (msg.text && msg.text.includes('フォロー')) { + let user: any; + this.ai.api("users/show", { + userId: msg.userId, + }).then(u => { + user = u; + if (user.isFollowing) { + msg.reply(serifs.follow.alreadyFollowed); + } else { + this.ai.api("following/create", { + userId: msg.userId, + }); + msg.reply(serifs.follow.ok); + } + }); + return true; + } else { + return false; + } + } +} diff --git a/src/serifs.ts b/src/serifs.ts index 55a52ba..bb6e336 100644 --- a/src/serifs.ts +++ b/src/serifs.ts @@ -260,6 +260,16 @@ export default { server: { cpu: 'サーバーの負荷が高そうです。大丈夫でしょうか...?' + }, + + follow: { + ok: 'フォローしました!', + + requireMoreLove: 'もう少し仲良くなったらお願いできますか?', + + alreadyFollowed: 'えっ?既にあなたのことはフォローしていますよ!', + + ng: '嫌です...', } };