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

74 lines
2.0 KiB
JavaScript
Raw Normal View History

2017-10-04 20:55:50 +03:30
'use strict';
// DB
const { addCommand, getCommand } = require('../../stores/command');
2017-10-04 20:55:50 +03:30
// Bot
const { Markup } = require('telegraf');
2017-10-04 20:55:50 +03:30
const { replyOptions } = require('../../bot/options');
const { isMaster } = require('../../utils/config');
const preserved = require('../commands').handlers;
const addCommandHandler = async (ctx) => {
const { chat, message, reply } = ctx;
if (chat.type !== 'private') return null;
2019-01-24 19:53:10 +01:00
const { id } = ctx.from;
if (ctx.from.status !== 'admin') {
return reply(
' <b>Sorry, only admins access this command.</b>',
replyOptions
);
2017-10-04 20:55:50 +03:30
}
2018-05-20 18:20:21 +02:00
const [ slashCommand, commandName = '' ] = message.text.split(' ');
const isValidName = /^!?(\w+)$/.exec(commandName);
if (!isValidName) {
return reply(
'<b>Send a valid command.</b>\n\nExample:\n' +
'<code>/addcommand rules</code>',
replyOptions
);
}
const newCommand = isValidName[1].toLowerCase();
if (preserved.has(newCommand)) {
return reply('❗️ Sorry you can\'t use this name, it\'s preserved.\n\n' +
'Try another one.');
}
const replaceCmd = slashCommand.toLowerCase() === '/replacecommand';
const cmdExists = await getCommand({ isActive: true, name: newCommand });
if (!replaceCmd && cmdExists) {
return ctx.replyWithHTML(
' <b>This command already exists.</b>\n\n' +
'/commands - to see the list of commands.\n' +
2017-11-25 14:59:41 +03:30
'/addcommand <code>&lt;name&gt;</code> - to add a command.\n' +
'/removecommand <code>&lt;name&gt;</code>' +
' - to remove a command.',
2019-06-23 03:03:05 +02:00
Markup.keyboard([ [ `/replacecommand ${newCommand}` ] ])
.oneTime()
.resize()
.extra()
);
}
if (cmdExists && cmdExists.role === 'master' && !isMaster(ctx.from)) {
return ctx.reply(
' <b>Sorry, only master can replace this command.</b>',
replyOptions
);
}
await addCommand({ id, name: newCommand, state: 'role' });
return reply('Who can use this command?', Markup.keyboard([
[ 'Master', 'Admins', 'Everyone' ]
])
.oneTime()
.resize()
.extra());
2017-10-04 20:55:50 +03:30
};
module.exports = addCommandHandler;