ai/src/index.ts
2022-08-10 16:58:29 +09:00

104 lines
2.9 KiB
TypeScript

// AiOS bootstrapper
import 'module-alias/register';
import * as chalk from 'chalk';
import * as request from 'request-promise-native';
const promiseRetry = require('promise-retry');
import from './ai';
import config from './config';
import _log from './utils/log';
const pkg = require('../package.json');
import CoreModule from './modules/core';
import TalkModule from './modules/talk';
import BirthdayModule from './modules/birthday';
import ReversiModule from './modules/reversi';
import SummonCat from './modules/summonCat';
import PingModule from './modules/ping';
import EmojiModule from './modules/emoji';
import EmojiReactModule from './modules/emoji-react';
import FortuneModule from './modules/fortune';
import GuessingGameModule from './modules/guessing-game';
import KazutoriModule from './modules/kazutori';
import KeywordModule from './modules/keyword';
import WelcomeModule from './modules/welcome';
import TimerModule from './modules/timer';
import DiceModule from './modules/dice';
import ServerModule from './modules/server';
import FollowModule from './modules/follow';
import ValentineModule from './modules/valentine';
import MazeModule from './modules/maze';
import ChartModule from './modules/chart';
import SleepReportModule from './modules/sleep-report';
import NotingModule from './modules/noting';
// import PollModule from './modules/poll';
import ReminderModule from './modules/reminder';
import Earthquake from './modules/earthquake';
import DicModule from './modules/dic';
import MenuModule from './modules/menu';
import GetColorModule from './modules/color';
console.log(' __ ____ _____ ___ ');
console.log(' /__\\ (_ _)( _ )/ __)');
console.log(' /(__)\\ _)(_ )(_)( \\__ \\');
console.log('(__)(__)(____)(_____)(___/\n');
function log(msg: string): void {
_log(`[Boot]: ${msg}`);
}
log(chalk.bold(`Ai v${pkg._v}`));
promiseRetry((retry) => {
log(`Account fetching... ${chalk.gray(config.host)}`);
// アカウントをフェッチ
return request.post(`${config.apiUrl}/i`, {
json: {
i: config.i,
},
}).catch(retry);
}, {
retries: 3,
}).then((account) => {
const acct = `@${account.username}`;
log(chalk.green(`Account fetched successfully: ${chalk.underline(acct)}`));
log('Starting AiOS...');
// 藍起動
new (account, [
new CoreModule(),
new ReminderModule(),
new SummonCat(),
new EmojiModule(),
new EmojiReactModule(),
new FortuneModule(),
new GuessingGameModule(),
new KazutoriModule(),
new ReversiModule(),
new TimerModule(),
new DiceModule(),
new TalkModule(),
new PingModule(),
new WelcomeModule(),
new ServerModule(),
// new FollowModule(),
new BirthdayModule(),
new ValentineModule(),
new KeywordModule(),
new MazeModule(),
new ChartModule(),
new SleepReportModule(),
new NotingModule(),
// new PollModule(),
new DicModule(),
new MenuModule(),
new GetColorModule(),
new Earthquake(),
]);
}).catch((e) => {
log(chalk.red('Failed to fetch the account'));
});