2
0
mirror of https://github.com/thedevs-network/the-guard-bot synced 2025-08-24 10:58:19 +00:00
the-guard-bot/handlers/messages/runCustomCmd.js

60 lines
1.3 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-04 20:55:50 +03:30
const isCommand = message.entities &&
message.entities.filter(entity => entity.type === 'bot_command');
if (!isCommand || !isCommand.length) {
return next();
}
const commandName = message.text.split(' ')[0].replace('/', '');
const command = await getCommand({ isActive: true, name: commandName });
if (!command) {
return next();
}
const { caption, content, role, type } = command;
const replyTo = message.reply_to_message
? { reply_to_message_id: message.reply_to_message.message_id }
: {};
const options = Object.assign(replyTo, caption ? { caption } : {});
if (
role === 'Master' &&
!isMaster ||
2017-10-04 20:55:50 +03:30
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;