|
@@ -8,9 +8,64 @@ logger.level = 'info';
|
|
|
class default_1 {
|
|
|
constructor(opt) {
|
|
|
this.retryInterval = 1000;
|
|
|
+ this.initWebsocket = () => {
|
|
|
+ this.bot = new CQWebsocket(this.botInfo);
|
|
|
+ this.bot.on('socket.connect', () => {
|
|
|
+ logger.info('websocket connected');
|
|
|
+ this.retryInterval = 1000;
|
|
|
+ });
|
|
|
+ this.bot.on('socket.close', () => {
|
|
|
+ logger.error('websocket closed');
|
|
|
+ this.reconnect();
|
|
|
+ });
|
|
|
+ this.bot.on('socket.error', () => {
|
|
|
+ logger.error('websocket connect error');
|
|
|
+ this.reconnect();
|
|
|
+ });
|
|
|
+ this.bot.on('message', (e, context) => {
|
|
|
+ e.cancel();
|
|
|
+ const chat = {
|
|
|
+ chatType: context.message_type,
|
|
|
+ chatID: 0,
|
|
|
+ };
|
|
|
+ switch (context.message_type) {
|
|
|
+ case ChatType.Private:
|
|
|
+ chat.chatID = context.user_id;
|
|
|
+ break;
|
|
|
+ case ChatType.Group:
|
|
|
+ chat.chatID = context.group_id;
|
|
|
+ break;
|
|
|
+ case ChatType.Discuss:
|
|
|
+ chat.chatID = context.discuss_id;
|
|
|
+ }
|
|
|
+ const cmdObj = helper_1.default(context.raw_message);
|
|
|
+ switch (cmdObj.cmd) {
|
|
|
+ case 'twitter_sub':
|
|
|
+ case 'twitter_subscribe':
|
|
|
+ return this.botInfo.sub(chat, cmdObj.args);
|
|
|
+ case 'twitter_unsub':
|
|
|
+ case 'twitter_unsubscribe':
|
|
|
+ return this.botInfo.unsub(chat, cmdObj.args);
|
|
|
+ case 'ping':
|
|
|
+ case 'twitter':
|
|
|
+ return this.botInfo.list(chat, cmdObj.args);
|
|
|
+ case 'help':
|
|
|
+ return `推特搬运机器人:
|
|
|
+/twitter - 查询当前聊天中的订阅
|
|
|
+/twitter_subscribe [链接] - 订阅 Twitter 搬运
|
|
|
+/twitter_unsubscribe [链接] - 退订 Twitter 搬运`;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ };
|
|
|
this.connect = () => {
|
|
|
+ this.initWebsocket();
|
|
|
logger.warn('connecting to websocket...');
|
|
|
- this.bot.connect();
|
|
|
+ try {
|
|
|
+ this.bot.connect();
|
|
|
+ }
|
|
|
+ catch (err) {
|
|
|
+ this.reconnect();
|
|
|
+ }
|
|
|
};
|
|
|
this.reconnect = () => {
|
|
|
this.retryInterval *= 2;
|
|
@@ -23,59 +78,13 @@ class default_1 {
|
|
|
}, this.retryInterval);
|
|
|
};
|
|
|
logger.info(`init cqwebsocket for ${opt.host}:${opt.port}, with access_token ${opt.access_token}`);
|
|
|
- this.bot = new CQWebsocket({
|
|
|
+ this.botInfo = {
|
|
|
access_token: opt.access_token,
|
|
|
enableAPI: true,
|
|
|
enableEvent: true,
|
|
|
host: opt.host,
|
|
|
port: opt.port,
|
|
|
- });
|
|
|
- this.bot.on('socket.connect', () => {
|
|
|
- logger.info('websocket connected');
|
|
|
- this.retryInterval = 1000;
|
|
|
- });
|
|
|
- this.bot.on('socket.close', () => {
|
|
|
- logger.error('websocket closed');
|
|
|
- this.reconnect();
|
|
|
- });
|
|
|
- this.bot.on('socket.error', () => {
|
|
|
- logger.error('websocket connect error');
|
|
|
- this.reconnect();
|
|
|
- });
|
|
|
- this.bot.on('message', (e, context) => {
|
|
|
- e.cancel();
|
|
|
- const chat = {
|
|
|
- chatType: context.message_type,
|
|
|
- chatID: 0,
|
|
|
- };
|
|
|
- switch (context.message_type) {
|
|
|
- case ChatType.Private:
|
|
|
- chat.chatID = context.user_id;
|
|
|
- break;
|
|
|
- case ChatType.Group:
|
|
|
- chat.chatID = context.group_id;
|
|
|
- break;
|
|
|
- case ChatType.Discuss:
|
|
|
- chat.chatID = context.discuss_id;
|
|
|
- }
|
|
|
- const cmdObj = helper_1.default(context.raw_message);
|
|
|
- switch (cmdObj.cmd) {
|
|
|
- case 'twitter_sub':
|
|
|
- case 'twitter_subscribe':
|
|
|
- return opt.sub(chat, cmdObj.args);
|
|
|
- case 'twitter_unsub':
|
|
|
- case 'twitter_unsubscribe':
|
|
|
- return opt.unsub(chat, cmdObj.args);
|
|
|
- case 'ping':
|
|
|
- case 'twitter':
|
|
|
- return opt.list(chat, cmdObj.args);
|
|
|
- case 'help':
|
|
|
- return `推特搬运机器人:
|
|
|
-/twitter - 查询当前聊天中的订阅
|
|
|
-/twitter_subscribe [链接] - 订阅 Twitter 搬运
|
|
|
-/twitter_unsubscribe [链接] - 退订 Twitter 搬运`;
|
|
|
- }
|
|
|
- });
|
|
|
+ };
|
|
|
}
|
|
|
}
|
|
|
exports.default = default_1;
|