2017-10-06 16:34:23 +03:30
|
|
|
'use strict';
|
|
|
|
|
|
|
|
// Config
|
2017-10-06 18:35:53 +02:00
|
|
|
const { masterID } = require('../../config.json');
|
2017-10-06 16:34:23 +03:30
|
|
|
|
|
|
|
// DB
|
|
|
|
const { addUser, isUser } = require('../../stores/user');
|
|
|
|
|
|
|
|
const addUserHandler = async (ctx, next) => {
|
|
|
|
const { message } = ctx;
|
2017-10-08 11:30:34 +03:30
|
|
|
const { new_chat_members } = message;
|
2017-10-06 16:34:23 +03:30
|
|
|
const newUser = message.from;
|
|
|
|
const user = newUser && await isUser(message.from);
|
|
|
|
const usersToAdd = [];
|
|
|
|
|
2017-10-08 11:30:34 +03:30
|
|
|
if (new_chat_members) {
|
|
|
|
new_chat_members.forEach(async member => {
|
|
|
|
if (!await isUser(member)) {
|
|
|
|
usersToAdd.push(addUser(member));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2017-10-06 16:34:23 +03:30
|
|
|
if (!user && newUser) {
|
|
|
|
usersToAdd.push(addUser(newUser));
|
|
|
|
}
|
|
|
|
|
|
|
|
ctx.state = {
|
|
|
|
isAdmin: user && user.status === 'admin',
|
2017-10-06 21:39:03 +03:30
|
|
|
isMaster: user && user.id === masterID,
|
2017-10-06 16:34:23 +03:30
|
|
|
user: newUser,
|
|
|
|
};
|
|
|
|
|
|
|
|
if (
|
|
|
|
message.reply_to_message &&
|
|
|
|
message.reply_to_message.from &&
|
|
|
|
!await isUser(message.reply_to_message.from)
|
|
|
|
) {
|
|
|
|
usersToAdd.push(addUser(message.reply_to_message.from));
|
|
|
|
}
|
|
|
|
|
|
|
|
await Promise.all(usersToAdd);
|
|
|
|
|
|
|
|
return next();
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = addUserHandler;
|