This repository has been archived on 2024-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
line-cost-js/MessageClass.js
2021-04-13 12:03:51 +08:00

182 lines
7.0 KiB
JavaScript

const dateFormat = require('dateformat');
/** Message */
class MessageClass {
constructor(bot, JianMiaubot, Tools_MYSQLDB) {
this.bot = bot;
this.JianMiaubot = JianMiaubot;
this.Tools_MYSQLDB = Tools_MYSQLDB;
}
Message(event) {
switch (event.message.type) {
case 'text': {
this.Text(event);
break;
}
case 'sticker': {
this.Sticker(event);
break;
}
default:
break;
}
}
Text(event) {
switch (event.source.type) {
case "user": {
this.User(event);
break;
}
case "group":
break;
default:
break;
}
}
async Sticker(event) {
switch (event.source.type) {
case "user": {
let userId = event.source.userId;
let displayName = "";
let profile = await this.bot.getUserProfile(userId);
if (profile) {
displayName = profile.displayName;
}
let replyMsg = `line://app/1602687308-GXq4Vvk9?type=sticker&stk=noanim&sid=${event.message.stickerId}&pkg=${event.message.packageId}`;
//ToJianMiau------------------------------------------------------------------------------------------------------
if (userId !== process.env.toZhuHantoJianMiau) {
let ToJM_message = "已接收訊息:";
ToJM_message += "\ndisplayName: $displayName";
ToJM_message += "\nuserId: $userId";
ToJM_message += "\n" + replyMsg;
let res_toJianMiau = this.JianMiaubot.push(process.env.toJianMiau, ToJM_message);
}
let res_reply = event.reply(replyMsg).then(function (data) {
// 當訊息成功回傳後的處理
}).catch(function (error) {
// 當訊息回傳失敗後的處理
});
break;
}
case "group":
break;
default:
break;
}
}
async User(event) {
let userId = event.source.userId;
let replyMsg = event.message.text;
let displayName = "";
let datetime = dateFormat(new Date(), "yyyy-mm-dd HH:MM:ss");
let profile = await this.bot.getUserProfile(userId);
if (profile) {
displayName = profile.displayName;
}
//ToJianMiau------------------------------------------------------------------------------------------------------
if (userId !== process.env.toZhuHantoJianMiau) {
let ToJM_message = `已接收訊息:`;
ToJM_message += `\ndisplayName: ${displayName}`;
ToJM_message += `\nuserId: ${userId}`;
ToJM_message += `\nmessage: ${replyMsg}`;
let res_toJianMiau = this.JianMiaubot.push(process.env.toJianMiau, ToJM_message);
}
// JianMiau特別功能
if (userId === process.env.toZhuHantoJianMiau || userId === process.env.toZhuHantoZhuHan) {
/** 訊息 */
let Msg = event.message.text.split(" ");
/** 指令 */
let Instruction = Msg[0];
switch (Instruction) {
case "msg":
case "Msg":
case "MSG": {
if (userId == process.env.toZhuHantoJianMiau) {
if (Msg[1] === "豬涵") {
Msg[1] = process.env.toZhuHantoZhuHan;
} else if (Msg[1] === "建喵") {
Msg[1] = process.env.toZhuHantoJianMiau;
}
replyMsg = "";
for (let i = 2; i < Msg.length; i++) {
replyMsg += Msg[i] + (i === Msg.length - 1 ? "" : " ");
}
let res_Msg = this.bot.push(Msg[1], replyMsg);
let ToJM_message = "已發送訊息:";
ToJM_message += `\nuserId: ${Msg[1]}`;
ToJM_message += `\nmessage: ${replyMsg}`;
let res_reply = event.reply(ToJM_message).then(function (data) {
// 當訊息成功回傳後的處理
}).catch(function (error) {
// 當訊息回傳失敗後的處理
});
}
return;
}
default: {
let Query = `SELECT * FROM \`line-cost-status\` WHERE \`userId\` = '${userId}' LIMIT 1;`;
let res_Query = await this.Tools_MYSQLDB.Query(Query);
let Data = res_Query;
let Status = Data[0]['Status'];
switch (Status) {
case "Love_Pig_QA OK": {
let Extra = JSON.parse(Data[0]["Extra"]);
let answer = false;
let keyword = Extra["keyword"].split(",");
for (let i = 0; i < keyword.length; i++) {
if (!keyword[i] || event.message.text.indexOf(keyword[i]) !== -1) {
answer = true;
}
}
if (answer) {
replyMsg = "答對, 答案就是:";
} else {
replyMsg = "答錯, 正確答案是:";
}
replyMsg += "\n" + Extra["answer"];
Query = `UPDATE \`line-cost-status\` SET \`datetime\`='${datetime}', \`Status\`='', \`Extra\`='' WHERE (\`userId\`='${userId}');`;
res_Query = await this.Tools_MYSQLDB.Query(Query);
event.reply(replyMsg).then(function (data) {
// 當訊息成功回傳後的處理
}).catch(function (error) {
// 當訊息回傳失敗後的處理
});
return;
}
default:
break;
}
break;
}
}
if (replyMsg !== "") {
replyMsg = event.message.text;
// 使用event.reply(要回傳的訊息)方法可將訊息回傳給使用者
event.reply(replyMsg).then(function (data) {
// 當訊息成功回傳後的處理
}).catch(function (error) {
// 當訊息回傳失敗後的處理
});
}
}
}
}
module.exports = MessageClass