The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Rocket.Chat/packages/rocketchat-slashcommands-cr.../server.js

47 lines
1.1 KiB

function Create(command, params, item) {
function getParams(str) {
const regex = /(--(\w+))+/g;
const result = [];
let m;
while ((m = regex.exec(str)) !== null) {
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
result.push(m[2]);
}
return result;
}
const regexp = /#?([\d-_\w]+)/g;
if (command !== 'create' || !Match.test(params, String)) {
return;
}
let channel = regexp.exec(params.trim());
channel = channel ? channel[1] : '';
if (channel === '') {
return;
}
const user = Meteor.users.findOne(Meteor.userId());
const room = RocketChat.models.Rooms.findOneByName(channel);
if (room != null) {
RocketChat.Notifications.notifyUser(Meteor.userId(), 'message', {
_id: Random.id(),
rid: item.rid,
ts: new Date(),
msg: TAPi18n.__('Channel_already_exist', {
postProcess: 'sprintf',
sprintf: [channel]
}, user.language)
});
return;
}
if (getParams(params).indexOf('private') > -1) {
return Meteor.call('createPrivateGroup', channel, []);
}
Meteor.call('createChannel', channel, []);
}
RocketChat.slashCommands.add('create', Create);