goat
command
developer
No description
0
views
0
likes
0
installs
Aliases: dev
raw source
const { config } = global.GoatBot;
const { writeFileSync } = require("fs-extra");
module.exports = {
config: {
name: "developer",
aliases: ["dev"],
version: "1.0",
author: "NeoKEX",
countDown: 5,
role: 4,
description: {
vi: "Thêm, xóa, sửa quyền developer",
en: "Add, remove, edit developer role"
},
category: "owner",
guide: {
vi: ' {pn} [add | -a] <uid | @tag>: Thêm quyền developer cho người dùng'
+ '\n {pn} [remove | -r] <uid | @tag>: Xóa quyền developer của người dùng'
+ '\n {pn} [list | -l]: Liệt kê danh sách developers',
en: ' {pn} [add | -a] <uid | @tag>: Add developer role for user'
+ '\n {pn} [remove | -r] <uid | @tag>: Remove developer role of user'
+ '\n {pn} [list | -l]: List all developers'
}
},
langs: {
vi: {
added: "✓ | Đã thêm quyền developer cho %1 người dùng:\n%2",
alreadyDev: "\n⚠ | %1 người dùng đã có quyền developer từ trước rồi:\n%2",
missingIdAdd: "⚠ | Vui lòng nhập ID hoặc tag người dùng muốn thêm quyền developer",
removed: "✓ | Đã xóa quyền developer của %1 người dùng:\n%2",
notDev: "⚠ | %1 người dùng không có quyền developer:\n%2",
missingIdRemove: "⚠ | Vui lòng nhập ID hoặc tag người dùng muốn xóa quyền developer",
listDev: "⚙ | Danh sách developers:\n%1"
},
en: {
added: "✓ | Added developer role for %1 users:\n%2",
alreadyDev: "\n⚠ | %1 users already have developer role:\n%2",
missingIdAdd: "⚠ | Please enter ID or tag user to add developer role",
removed: "✓ | Removed developer role of %1 users:\n%2",
notDev: "⚠ | %1 users don't have developer role:\n%2",
missingIdRemove: "⚠ | Please enter ID or tag user to remove developer role",
listDev: "⚙ | List of developers:\n%1"
}
},
onStart: async function ({ message, args, usersData, event, getLang }) {
if (!config.devUsers)
config.devUsers = [];
switch (args[0]) {
case "add":
case "-a": {
if (args[1]) {
let uids = [];
if (Object.keys(event.mentions).length > 0)
uids = Object.keys(event.mentions);
else if (event.messageReply)
uids.push(event.messageReply.senderID);
else
uids = args.filter(arg => !isNaN(arg));
const notDevIds = [];
const devIds = [];
for (const uid of uids) {
if (config.devUsers.includes(uid))
devIds.push(uid);
else
notDevIds.push(uid);
}
config.devUsers.push(...notDevIds);
const getNames = await Promise.all(uids.map(uid => usersData.getName(uid).then(name => ({ uid, name }))));
writeFileSync(global.client.dirConfig, JSON.stringify(config, null, 2));
return message.reply(
(notDevIds.length > 0 ? getLang("added", notDevIds.length, getNames.map(({ uid, name }) => `• ${name} (${uid})`).join("\n")) : "")
+ (devIds.length > 0 ? getLang("alreadyDev", devIds.length, devIds.map(uid => `• ${uid}`).join("\n")) : "")
);
}
else
return message.reply(getLang("missingIdAdd"));
}
case "remove":
case "-r": {
if (args[1]) {
let uids = [];
if (Object.keys(event.mentions).length > 0)
uids = Object.keys(event.mentions);
else
uids = args.filter(arg => !isNaN(arg));
const notDevIds = [];
const devIds = [];
for (const uid of uids) {
if (config.devUsers.includes(uid))
devIds.push(uid);
else
notDevIds.push(uid);
}
for (const uid of devIds)
config.devUsers.splice(config.devUsers.indexOf(uid), 1);
const getNames = await Promise.all(devIds.map(uid => usersData.getName(uid).then(name => ({ uid, name }))));
writeFileSync(global.client.dirConfig, JSON.stringify(config, null, 2));
return message.reply(
(devIds.length > 0 ? getLang("removed", devIds.length, getNames.map(({ uid, name }) => `• ${name} (${uid})`).join("\n")) : "")
+ (notDevIds.length > 0 ? getLang("notDev", notDevIds.length, notDevIds.map(uid => `• ${uid}`).join("\n")) : "")
);
}
else
return message.reply(getLang("missingIdRemove"));
}
case "list":
case "-l": {
const getNames = await Promise.all(config.devUsers.map(uid => usersData.getName(uid).then(name => ({ uid, name }))));
return message.reply(getLang("listDev", getNames.map(({ uid, name }) => `• ${name} (${uid})`).join("\n")));
}
default:
return message.SyntaxError();
}
}
};