multi-task-widget-cross-pla.../scripts/index.js

529 lines
13 KiB
JavaScript

const commands = configs.commands;
let params = {};
function respond(template, params) {
Object.keys(params).forEach((key) => {
template = template.replace(`{${key}}`, params[key]);
});
ComfyJS.Say(template);
}
function isMod(flags) {
return flags.broadcaster || flags.mod;
}
function isStreamer(flags) {
return flags.broadcaster;
}
function processCommand(user, command, message, flags, extra) {
params = {
user: user,
message: message,
pointName: configs.settings.pointsName,
};
if (commands.addTaskCommands.includes(command)) {
let addRequest = addTask(user, extra.userColor, message);
if (addRequest.status !== 200) {
respond(addRequest.body.error, params);
return;
}
let addedResponse = responses.taskAdded;
params.task = addRequest.body.task;
if (addRequest.body.tasksFailedToAdd !== "") {
addedResponse += ` | Failed to add task(s): "${addRequest.body.tasksFailedToAdd}"`;
}
respond(addedResponse, params);
} else if (commands.editTaskCommands.includes(command)) {
let editRequest = editTask(user, message);
if (editRequest.status !== 200) {
respond(editRequest.body.error, params);
return;
}
let originalTask = editRequest.body.originalTask;
let newTask = editRequest.body.newTask;
params.task = newTask;
params.originalTask = originalTask;
respond(responses.taskEdited, params);
} else if (commands.deleteTaskCommands.includes(command)) {
let removeRequest = removeTask(user, message);
if (removeRequest.status !== 200) {
respond(removeRequest.body.error, params);
return;
}
let deletedResponse = responses.taskDeleted;
let removedTasks = removeRequest.body.removedTasks;
let failedTasks = removeRequest.body.failedTasks;
params.task = removedTasks;
if (failedTasks !== "") {
deletedResponse += ` | Failed to delete task(s): "${failedTasks}"`;
}
respond(deletedResponse, params);
} else if (commands.finishTaskCommands.includes(command)) {
if (message === "all") {
let finishAllRequest = markAllTasksAsDone(user);
if (finishAllRequest.status !== 200) {
respond(finishAllRequest.body.error, params);
return;
}
let finishedAllResponse = responses.allTasksFinished;
params.doneCount = completedTasksCount(user);
respond(finishedAllResponse, params);
return;
}
let finishRequest = markTaskDone(user, message);
if (finishRequest.status !== 200) {
respond(finishRequest.body.error, params);
return;
}
let finishedResponse = responses.taskFinished;
params.task = finishRequest.body.markedTasks;
params.doneCount = completedTasksCount(user);
params.pointCount =
finishRequest.body.markedTasksCount *
configs.settings.pointsPerTask;
if (finishRequest.body.failedTasks !== "") {
finishedResponse += ` | Failed to finish task(s): "${finishRequest.body.failedTasks}"`;
}
respond(finishedResponse, params);
} else if (commands.unfinishTaskCommands.includes(command)) {
let unfinishRequest = markTaskUndone(user, message);
if (unfinishRequest.status !== 200) {
respond(unfinishRequest.body.error, params);
return;
}
// task unfinished
let unfinishedResponse = responses.taskUnfinished;
params.task = unfinishRequest.body.markedTasks;
if (unfinishRequest.body.failedTasks !== "") {
unfinishedResponse += ` | Failed to unfinish task(s): "${unfinishRequest.body.failedTasks}"`;
}
respond(unfinishedResponse, params);
} else if (commands.nextTaskCommands.includes(command)) {
let nextRequest = nextTask(user, message);
if (nextRequest.status !== 200) {
respond(nextRequest.body.error, params);
return;
}
// task next
let nextResponse = responses.taskNext;
params.oldTask = nextRequest.body.oldTask;
params.newTask = nextRequest.body.newTask;
respond(nextResponse, params);
} else if (commands.nowTaskCommands.includes(command)) {
let nowRequest = nowTask(user, extra.userColor, message);
if (nowRequest.status !== 200) {
respond(nowRequest.body.error, params);
return;
}
// task now
let nowResponse = responses.nowTask;
params.task = nowRequest.body.task;
respond(nowResponse, params);
} else if (commands.focusTaskCommands.includes(command)) {
let focusRequest = focusTask(user, message);
if (focusRequest.status !== 200) {
respond(focusRequest.body.error, params);
return;
}
// task focused
let focusedResponse = responses.taskFocused;
params.task = focusRequest.body.focusedTask;
respond(focusedResponse, params);
} else if (commands.unfocusTaskCommands.includes(command)) {
let unfocusRequest = unfocusTask(user);
if (unfocusRequest.status !== 200) {
respond(unfocusRequest.body.error, params);
return;
}
// task unfocused
let unfocusedResponse = responses.clearFocused;
respond(unfocusedResponse, params);
} else if (commands.checkCommands.includes(command)) {
if (message === "") {
let checkRequest = checkTasks(user);
if (checkRequest.status !== 200) {
// no tasks
respond(checkRequest.body.error, params);
return;
}
return respond(checkRequest.body.reply, params);
} else {
let mentioned = message.replace("@", "");
let checkRequest = checkTasks(mentioned);
if (checkRequest.status !== 200) {
// no tasks
respond(checkRequest.body.error, params);
return;
}
return respond(checkRequest.body.reply, params);
}
} else if (commands.adminDeleteCommands.includes(command)) {
if (!isMod(flags)) {
respond(responses.notMod, params);
return;
}
let mentioned = message.replace("@", "");
if (mentioned === "") {
respond(responses.specifyUser, params);
return;
}
let clearUserTaskResponse = clearUserTasks(mentioned);
params.mentioned = mentioned;
if (clearUserTaskResponse.status === 0) {
// no tasks
respond(responses.noTaskA, params);
return;
}
respond(responses.adminDeleteTasks, params);
return;
} else if (commands.adminClearDoneCommands.includes(command)) {
if (!isStreamer(flags)) {
respond(responses.notStreamer, params);
return;
}
clearAllDoneTasks();
respond(responses.clearedDone, params);
return;
} else if (commands.adminClearAllCommands.includes(command)) {
if (!isStreamer(flags)) {
respond(responses.notStreamer, params);
return;
}
clearAll();
respond(responses.clearedAll, params);
return;
} else if (commands.clearMyDoneCommands.includes(command)) {
let clearOwnDoneResponse = clearOwnDoneTasks(user);
if (clearOwnDoneResponse.status !== 200) {
// no tasks
respond(responses.noTask, params);
return;
}
respond(responses.clearedMyDone, params);
} else if (commands.adminClearNotStreamerCommands.includes(command)) {
if (!isStreamer(flags)) {
respond(responses.notStreamer, params);
return;
}
clearAllExceptStreamer(auth.channel);
respond(responses.clearTasksExceptBroadcaster, params);
} else if (commands.adminClearTasksCommands.includes(command)) {
if (!isStreamer(flags)) {
respond(responses.notStreamer, params);
return;
}
clearAllTasks();
respond(responses.clearedTasks, params);
} else if (commands.listCommands.includes(command)) {
let listTaskResponse = listTasks(user);
if (listTaskResponse.status !== 200) {
// no tasks
respond(listTaskResponse.body.error, params);
return;
}
respond(listTaskResponse.body.reply, params);
} else if (commands.checkCountCommands.includes(command)) {
if (message === "") {
let count = completedTasksCount(user);
params.doneCount = count;
return respond(responses.checkYourCount, params);
} else {
let mentioned = message.replace("@", "");
let count = completedTasksCount(mentioned);
params.doneCount = count;
params.mentioned = mentioned;
return respond(responses.checkUserCount, params);
}
} else if (commands.checkAllCountCommands.includes(command)) {
let count = getBoardTotalTaskCount();
if (count === 0) {
respond(responses.noCountAll, params);
return;
}
params.doneCount = count;
respond(responses.checkAllCount, params);
} else if (commands.checkMyPointsCommands.includes(command)) {
if (message === "") {
let points = getUserPoints(user);
params.pointCount = points;
return respond(responses.checkMyPoints, params);
} else {
let mentioned = message.replace("@", "");
let points = getUserPoints(mentioned);
params.pointCount = points;
params.mentioned = mentioned;
return respond(responses.checkUserPoints, params);
}
} else if (commands.syncCountPointsCommands.includes(command)) {
if (!isStreamer(flags)) {
respond(responses.notStreamer, params);
return;
}
syncPointsToCount();
respond(responses.syncCountPoints, params);
} else if (commands.addPointsCommands.includes(command)) {
// !addpoints @user 100
if (!isMod(flags)) {
respond(responses.notMod, params);
return;
}
let mentioned = message.split(" ")[0].replace("@", "");
if (mentioned === "") {
respond(responses.specifyUser, params);
return;
}
let points = message.split(" ")[1];
if (points === undefined) {
respond(responses.specifyPoints, params);
return;
}
if (!/^\d+$/.test(points)) {
respond(responses.invalidNumber, params);
return;
}
points = parseInt(points);
addPoints(mentioned, points);
params.mentioned = mentioned;
params.pointCount = points;
respond(responses.addPoints, params);
} else if (commands.reducePointsCommands.includes(command)) {
if (!isMod(flags)) {
respond(responses.notMod, params);
return;
}
let mentioned = message.split(" ")[0].replace("@", "");
if (mentioned === "") {
respond(responses.specifyUser, params);
return;
}
let points = message.split(" ")[1];
if (points === undefined) {
respond(responses.specifyPoints, params);
return;
}
if (!/^\d+$/.test(points)) {
respond(responses.invalidNumber, params);
return;
}
reducePoints(mentioned, points);
params.mentioned = mentioned;
params.pointCount = points;
respond(responses.reducePoints, params);
} else if (commands.setUserPointsCommands.includes(command)) {
if (!isMod(flags)) {
respond(responses.notMod, params);
return;
}
let mentioned = message.split(" ")[0].replace("@", "");
if (mentioned === "") {
respond(responses.specifyUser, params);
return;
}
let points = message.split(" ")[1];
if (points === undefined) {
respond(responses.specifyPoints, params);
return;
}
if (!/^\d+$/.test(points)) {
respond(responses.invalidNumber, params);
return;
}
points = parseInt(points);
setUserPoints(mentioned, points);
params.mentioned = mentioned;
params.pointCount = points;
respond(responses.setUserPoints, params);
} else if (commands.setUserTaskCountCommands.includes(commands)) {
if (!isMod(flags)) {
respond(responses.notMod, params);
return;
}
let mentioned = message.split(" ")[0].replace("@", "");
if (mentioned === "") {
respond(responses.specifyUser, params);
return;
}
let count = message.split(" ")[1];
if (count === undefined) {
respond(responses.specifyCount, params);
return;
}
if (!/^\d+$/.test(count)) {
respond(responses.invalidNumber, params);
return;
}
points = parseInt(points);
setUserTaskCount(mentioned, count);
params.mentioned = mentioned;
params.pointCount = count;
respond(responses.setUserTaskCount, params);
} else if (commands.leaderboardCommands.includes(command)) {
let leaderboardResponse = leaderboardTaskCount(5);
if (leaderboardResponse.status !== 200) {
respond(leaderboardResponse.body.error, params);
return;
}
let leaderboard = leaderboardResponse.body.leaderboard;
respond(leaderboard, params);
} else if (commands.adminSetBoardCount.includes(command)) {
if (!isStreamer(flags)) {
respond(responses.notStreamer, params);
return;
}
// check if message is a number using regex
if (!/^\d+$/.test(message)) {
respond(responses.invalidNumber, params);
return;
}
params.count = message;
setTotalCompleteCount(message);
respond(responses.setBoardCount, params);
} else if (commands.adminResetBoardCount.includes(command)) {
if (!isStreamer(flags)) {
respond(responses.notStreamer, params);
return;
}
resetBoardCount();
respond(responses.clearedBoardCount, params);
} else if (commands.adminResetUsersCount.includes(command)) {
if (!isStreamer(flags)) {
respond(responses.notStreamer, params);
return;
}
resetUsersCount();
respond(responses.clearedUsersCount, params);
} else if (commands.helpCommands.includes(command)) {
respond(responses.help, params);
} else if (commands.additionalCommands[command]) {
respond(commands.additionalCommands[command], params);
} else {
// command not found
}
}
ComfyJS.onCommand = (user, command, message, flags, extra) => {
command = `!${command.toLowerCase()}`;
processCommand(user, command, message, flags, extra);
};
ComfyJS.Init(auth.username, `oauth:${auth.oauth}`, [auth.channel]);