UNPKG

ts3-nodejs-library

Version:
135 lines (112 loc) 4.15 kB
import { Abstract } from "./Abstract" import { TeamSpeak } from "../TeamSpeak" import { ChannelGroupList } from "../types/ResponseTypes" export class TeamSpeakChannelGroup extends Abstract { constructor(parent: TeamSpeak, list: ChannelGroupList) { super(parent, list, "channelgroup") } get cgid() { return super.getPropertyByName("cgid")! } get name() { return super.getPropertyByName("name")! } get type() { return super.getPropertyByName("type")! } get iconid() { return super.getPropertyByName("iconid")! } get savedb() { return super.getPropertyByName("savedb")! } get sortid() { return super.getPropertyByName("sortid")! } get namemode() { return super.getPropertyByName("namemode")! } get nModifyp() { return super.getPropertyByName("n_modifyp")! } get nMemberAddp() { return super.getPropertyByName("n_member_addp")! } get nMemberRemovep() { return super.getPropertyByName("n_member_removep")! } /** * Deletes the channel group. If force is set to 1, the channel group will be deleted even if there are clients within. * @param force if set to 1 the channelgroup will be deleted even when clients are in it */ del(force?: number) { return super.getParent().deleteChannelGroup(this.cgid, force) } /** * Creates a copy of the channel group. If tcgid is set to 0, the server will create a new group. * To overwrite an existing group, simply set tcgid to the ID of a designated target group. * If a target group is set, the name parameter will be ignored. * @param tcgid the target group, 0 to create a new group * @param type the type of the group (0 = Template Group | 1 = Normal Group) * @param name name of the group */ copy(tcgid: number, type: number, name: string) { return super.getParent().channelGroupCopy(this.cgid, tcgid, type, name) } /** * changes the name of the channelgroup * @param name new name of the group */ rename(name: string) { return super.getParent().channelGroupRename(this.cgid, name) } /** * returns a list of permissions assigned to the channel group specified with cgid. * @param permsid if the permsid option is set to true the output will contain the permission names */ permList(permsid: boolean = false) { return super.getParent().channelGroupPermList(this.cgid, permsid) } /** * Adds a specified permissions to the channel group. * A permission can be specified by permid or permsid. * @param perm the permid or permsid * @param value value of the Permission * @param skip whether the skip flag should be set * @param negate whether the negate flag should be set */ addPerm(perm: string|number, value: number, skip?: number, negate?: number) { return super.getParent().channelGroupAddPerm(this.cgid, perm, value, skip, negate) } /** * Removes a set of specified permissions from the channel group. * A permission can be specified by permid or permsid. * @param perm the permid or permsid */ delPerm(perm: string|number) { return super.getParent().channelGroupDelPerm(this.cgid, perm) } /** * sets the channel group of a client * @param cid the channel in which the client should be assigned the Group * @param cldbid the client database id which should be added to the Group */ setClient(cid: number, cldbid: number) { return super.getParent().setClientChannelGroup(this.cgid, cid, cldbid) } /** * returns the ids of all clients currently residing in the channelgroup * @param cid the channel id */ clientList(cid: number) { return super.getParent().channelGroupClientList(this.cgid, cid) } /** returns a buffer with the icon of the channelgroup */ getIcon() { return this.getIconName().then(name => super.getParent().downloadIcon(name)) } /** gets the icon name of the channelgroup */ getIconName() { return super.getParent().getIconName(this.permList(true)) } }