3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-17 15:15:02 +00:00

Lock command V1

This commit is contained in:
Nils Blömeke 2019-05-20 14:13:31 +02:00
parent a2a7dd5b4b
commit 2f89d3ae25

View file

@ -1,4 +1,4 @@
import { decorators as d, getCommandSignature, IPluginOptions, ICommandDefinition, waitForReaction } from "knub";
import { decorators as d, getCommandSignature, IPluginOptions, ICommandDefinition } from "knub";
import {
CategoryChannel,
Channel,
@ -11,6 +11,7 @@ import {
TextChannel,
User,
VoiceChannel,
Permission,
} from "eris";
import {
channelMentionRegex,
@ -23,9 +24,7 @@ import {
multiSorter,
noop,
resolveMember,
SECONDS,
simpleClosestStringMatch,
sleep,
sorter,
stripObjectToScalars,
successMessage,
@ -77,6 +76,7 @@ interface IUtilityPluginConfig {
can_vcmove: boolean;
can_help: boolean;
can_about: boolean;
can_lock: boolean;
}
export class UtilityPlugin extends ZeppelinPlugin<IUtilityPluginConfig> {
@ -105,6 +105,7 @@ export class UtilityPlugin extends ZeppelinPlugin<IUtilityPluginConfig> {
can_vcmove: false,
can_help: false,
can_about: false,
can_lock: false,
},
overrides: [
{
@ -128,6 +129,7 @@ export class UtilityPlugin extends ZeppelinPlugin<IUtilityPluginConfig> {
can_ping: true,
can_source: true,
can_about: true,
can_lock: true,
},
},
],
@ -1059,4 +1061,36 @@ export class UtilityPlugin extends ZeppelinPlugin<IUtilityPluginConfig> {
msg.channel.createMessage("Reloading...");
this.knub.reloadGuild(this.guildId);
}
@d.command("lock", "[channel:channel]", {
aliases: ["unlock"],
})
@d.permission("can_lock")
async lockChannelCmd(msg: Message, args: { channel: GuildChannel & TextChannel }) {
const channel = args.channel || <GuildChannel>msg.channel;
if (channel == null || !(channel instanceof GuildChannel) || !(channel instanceof TextChannel)) {
await this.sendErrorMessage(msg.channel, `The channel \`${channel.name}\` cant be locked!`);
return;
}
const permission = channel.permissionOverwrites.get(this.guildId);
const everyonePerms = new Permission(permission.allow, permission.deny);
const everyonePermsJson = JSON.stringify(everyonePerms.json);
if (everyonePerms.has("sendMessages")) {
await channel.editPermission(this.guildId, permission.allow - 2048, permission.deny + 2048, "role");
this.sendSuccessMessage(msg.channel, `Locked ${channel.mention}`);
return;
} else if (!everyonePermsJson.includes("sendMessages")) {
await channel.editPermission(this.guildId, permission.allow, permission.deny + 2048, "role");
this.sendSuccessMessage(msg.channel, `Locked ${channel.mention}`);
return;
} else {
await channel.editPermission(this.guildId, permission.allow + 2048, permission.deny - 2048, "role");
this.sendSuccessMessage(msg.channel, `Unlocked ${channel.mention}`);
return;
}
}
}