56 lines
No EOL
1.2 KiB
TypeScript
56 lines
No EOL
1.2 KiB
TypeScript
import { ServerRoute } from "@hapi/hapi";
|
|
import { formatMessage } from "@/utils";
|
|
import boom from "@hapi/boom";
|
|
import { db } from "@/main";
|
|
import Joi from "joi";
|
|
|
|
const data: ServerRoute = {
|
|
method: `GET`, path: `/{channel}/unlurk`,
|
|
options: {
|
|
auth: false,
|
|
validate: {
|
|
params: Joi.object({
|
|
channel: Joi.string().alphanum(),
|
|
}),
|
|
query: Joi.object({
|
|
user: Joi.string(),
|
|
}),
|
|
},
|
|
},
|
|
async handler(request, h) {
|
|
const { channel } = request.params;
|
|
const { user } = request.query;
|
|
|
|
if (!db[channel]) {
|
|
throw boom.notFound(`Invalid channel`);
|
|
};
|
|
|
|
const messages = db[channel].messages;
|
|
const messageId = db[channel].lurkers[user];
|
|
|
|
/*
|
|
Gets the default unlurk message just in case the user doesn't have a
|
|
message group defined.
|
|
*/
|
|
let lurkMessage;
|
|
if (!messageId) {
|
|
lurkMessage = db[channel].unlurk_default;
|
|
} else {
|
|
const message = messages[messageId];
|
|
lurkMessage = message.unlurk[Math.floor(Math.random() * message.unlurk.length)];
|
|
delete db[channel].lurkers[user];
|
|
};
|
|
|
|
|
|
let twitchMessage = formatMessage(
|
|
lurkMessage,
|
|
{
|
|
user,
|
|
channel,
|
|
}
|
|
);
|
|
|
|
return h.response(twitchMessage).code(200);
|
|
},
|
|
};
|
|
export default data; |