2
0
mirror of https://github.com/thedevs-network/the-guard-bot synced 2025-09-06 17:15:16 +00:00
Files
the-guard-bot/handlers/messages/checkUsername.js

60 lines
1.4 KiB
JavaScript
Raw Normal View History

2017-09-25 12:40:04 +03:30
'use strict';
// DB
const { getUser } = require('../../stores/user');
const checkUsernameHandler = async ({ message }, next) => {
if (!message.entities) {
return next();
}
const messageArr = message.text ? message.text.split(' ') : '';
const isCommand = /^\/\w+/.test(messageArr[0]);
const hasMention = message.entities.some(entity =>
entity.type === 'mention');
const hasTextMention = message.entities.some(entity =>
entity.type === 'text_mention');
2017-10-06 22:14:32 +03:30
const hasId = /^\d+/.test(messageArr[1]);
2017-09-25 12:40:04 +03:30
if (!isCommand) {
return next();
}
if (hasMention) {
const [ , username ] = messageArr;
const isUsername = /^@\w+/.test(username);
if (!isUsername) {
return next();
}
const user = await getUser({ username: username.replace('@', '') });
if (user) {
message.text = message.text.replace(` ${username}`, '');
message.commandMention = user;
}
return next();
}
if (hasTextMention) {
const [ { user } ] = message.entities.filter(entity => entity.user);
const name = user.first_name;
if (name.split(' ')[0] !== messageArr[1]) {
return next();
}
message.text = message.text.replace(` ${name}`, '');
message.commandMention = user;
return next();
}
2017-10-06 22:14:32 +03:30
if (hasId) {
const [ , id ] = messageArr;
const user = await getUser({ id: Number(id) });
if (user) {
message.text = message.text.replace(` ${id}`, '');
message.commandMention = user;
}
return next();
}
2017-09-25 12:40:04 +03:30
return next();
};
module.exports = checkUsernameHandler;