2
0
mirror of https://github.com/thedevs-network/the-guard-bot synced 2025-08-25 11:27:20 +00:00
the-guard-bot/handlers/messages/runCustomCmd.js

67 lines
1.4 KiB
JavaScript
Raw Normal View History

2017-10-04 20:55:50 +03:30
'use strict';
// DB
const { getCommand } = require('../../stores/command');
const runCustomCmdHandler = async (ctx, next) => {
const { message, state } = ctx;
const { isAdmin, isMaster } = state;
2017-10-06 21:49:33 +03:30
const isCommand = /^!\w+/.test(message.text);
if (!isCommand) {
2017-10-04 20:55:50 +03:30
return next();
}
2017-11-20 13:29:33 +03:30
const commandName = message.text
.split(' ')[0]
.replace('!', '')
.toLowerCase();
2017-10-04 20:55:50 +03:30
const command = await getCommand({ isActive: true, name: commandName });
if (!command) {
return next();
}
const { caption, content, type } = command;
const role = command.role.toLowerCase();
2017-10-04 20:55:50 +03:30
const replyTo = message.reply_to_message
? { reply_to_message_id: message.reply_to_message.message_id }
: {};
2017-11-16 16:12:12 +03:30
const options = Object.assign(
replyTo,
caption ? { caption } : {},
{ disable_web_page_preview: true },
);
2017-10-04 20:55:50 +03:30
if (
role === 'master' &&
!isMaster ||
role === 'admins' &&
!isAdmin
2017-10-04 20:55:50 +03:30
) {
return next();
}
if (type === 'text') {
ctx.replyWithHTML(content, options);
return next();
}
if (type === 'photo') {
ctx.replyWithPhoto(content, options);
return next();
}
if (type === 'video') {
ctx.replyWithVideo(content, replyTo);
return next();
}
if (type === 'document') {
ctx.replyWithDocument(content, replyTo);
return next();
}
if (type === 'audio') {
ctx.replyWithAudio(content, replyTo);
return next();
}
return next();
};
module.exports = runCustomCmdHandler;