Beispiel #1
0
    def onTextMessageEvent(self, schid, targetMode, toID, fromID, fromName, fromUniqueIdentifier, message, ffIgnored):
        try:
            mClientID = ts3.getClientID(schid)[1]
            if (mClientID == fromID):
                return

            messageL = message.lower()
            parts = message.split(" ")
            
            msg = "no "
            foundNo = False
            foundU = False

            for current in parts:
                if (current == "no"):
                    msg += "no "
                    foundNo = True
                elif (current == "u"):
                    msg += current
                    foundU = True
                    break
                else:
                    continue
            
            if (not foundNo or not foundU):
                return

            if (targetMode == 1): #private msg
                ts3.requestSendPrivateTextMsg(schid, msg, fromID, "")
            if (targetMode == 2): #channel msg
                ts3.requestSendChannelTextMsg(schid, msg, 0, "")
        except:
            from traceback import format_exc;ts3.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR, "PyTSon", 0)
Beispiel #2
0
def sendCommand(name, cmd, schid=0, silent=True, reverse=False, mode=1):
    """
    Sends a command through TS3Hook.
    :param mode: See enum: HookMode
    :param reverse:
    :param name:
    :param cmd:
    :param schid:
    :param silent:
    """
    if schid == 0: schid = ts3lib.getCurrentServerConnectionHandlerID()
    if PluginHost.cfg.getboolean("general", "verbose") or not silent:
        ts3lib.printMessage(
            schid,
            '{timestamp} [color=orange]{name}[/color]:[color=white] {prefix}{message}'
            .format(timestamp=timestamp(),
                    name=name,
                    prefix="-" if reverse else "~",
                    message=cmd),
            ts3defines.PluginMessageTarget.PLUGIN_MESSAGE_TARGET_SERVER)
    print("mode:", mode)
    if mode == HookMode.TS3HOOK:
        cmd = "{}cmd{}".format("-" if reverse else "~", cmd.replace(" ", "~s"))
    elif mode == HookMode.TSPATCH:
        cmd = "{}{}".format("-" if reverse else "~", cmd)
    else:
        raise SyntaxError("No HookMode specified!")
    (err, clid) = ts3lib.getClientID(schid)
    retcode = ""  # "TS3Hook:Command:{}".format(ts3lib.createReturnCode(256))
    err = ts3lib.requestSendPrivateTextMsg(schid, cmd, clid, retcode)
    if err != ts3defines.ERROR_ok:
        ts3lib.requestSendChannelTextMsg(schid, cmd, 0, retcode)
    if err != ts3defines.ERROR_ok:
        ts3lib.requestSendServerTextMsg(schid, cmd, retcode)
Beispiel #3
0
 def onMenuItemEvent(self, schid, atype, menuItemID, selectedItemID):
     if atype == ts3defines.PluginItemType.PLUGIN_SERVER:
         if menuItemID == 0:
             self.dynamicSilence = not self.dynamicSilence
             ts3lib.printMessageToCurrentTab(
                 "{}{}: DynamicSilence set to [color=orange]{}".format(
                     timestamp(), self.name, self.dynamicSilence))
         elif menuItemID == 1:
             self.askForAvatar = not self.askForAvatar
             ts3lib.printMessageToCurrentTab(
                 "{}askForAvatar set to [color=orange]{}".format(
                     timestamp(), self.askForAvatar))
             if not self.askForAvatar:
                 self.clids = []
                 self.timer.stop()
                 return
             (err, clids) = ts3lib.getClientList(schid)
             for c in clids:
                 ts3lib.requestClientVariables(schid, c)
             for c in clids:
                 (err, uid) = ts3lib.getClientVariable(
                     schid, c,
                     ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
                 if getContactStatus(uid) == ContactStatus.BLOCKED: continue
                 if uid in self.alreadyAsked: continue
                 (err, sgroups) = ts3lib.getClientVariableAsString(
                     schid, c,
                     ts3defines.ClientPropertiesRare.CLIENT_SERVERGROUPS)
                 sgroups = sgroups.split(",")
                 if self.ruheGroupID in sgroups: continue
                 if set(sgroups).isdisjoint(self.premiumGroupIDs): continue
                 self.clids.append(c)
             ts3lib.printMessageToCurrentTab(
                 "{}Asking {} clients for avatar".format(
                     timestamp(), len(self.clids)))
             self.schid = schid
             self.timer.start(1000)
     if atype == ts3defines.PluginItemType.PLUGIN_CHANNEL:
         ts3lib.requestSendChannelTextMsg(schid, self.steammsg,
                                          selectedItemID)
     elif atype == ts3defines.PluginItemType.PLUGIN_CLIENT:
         if menuItemID == 0:
             ts3lib.requestSendPrivateTextMsg(schid, self.steammsg,
                                              selectedItemID)
         elif menuItemID == 1:
             print(self.aka)
             if self.aka != (0, 0, "", ""):
                 self.aka = (0, 0, "", "")
                 return
             realname = inputBox(self.name, "Real name:")
             if not realname: return
             (err, name) = ts3lib.getClientVariable(
                 schid, selectedItemID,
                 ts3defines.ClientProperties.CLIENT_NICKNAME)
             ts3lib.setClientSelfVariableAsString(
                 schid, ts3defines.ClientProperties.CLIENT_NICKNAME,
                 "{} aka {}".format(realname, name))
             ts3lib.flushClientSelfUpdates(schid)
             self.aka = (schid, selectedItemID, realname, name)
Beispiel #4
0
 def onMenuItemEvent(self, schid, atype, menuItemID, selectedItemID):
     if menuItemID != 0: return
     if atype == ts3defines.PluginItemType.PLUGIN_CHANNEL:
         ts3lib.requestSendChannelTextMsg(schid, self.steammsg,
                                          selectedItemID)
     elif atype == ts3defines.PluginItemType.PLUGIN_CLIENT:
         ts3lib.requestSendPrivateTextMsg(schid, self.steammsg,
                                          selectedItemID)
Beispiel #5
0
 def onMenuItemEvent(self, schid, atype, menuItemID, selectedItemID):
     if menuItemID != 0: return
     if atype == ts3defines.PluginMenuType.PLUGIN_MENU_TYPE_GLOBAL:
         self.printContacts()
     elif atype == ts3defines.PluginItemType.PLUGIN_CHANNEL:
         ts3lib.requestSendChannelTextMsg(schid, self.contactStats(),
                                          selectedItemID)
     elif atype == ts3defines.PluginItemType.PLUGIN_CLIENT:
         ts3lib.requestSendPrivateTextMsg(schid, self.contactStats(),
                                          selectedItemID)
Beispiel #6
0
 def answerMessage(self, schid, targetMode, toID, fromID, message, hideprefix=False):
     if schid in self.noperms: ts3lib.printMessageToCurrentTab("Insufficient permissions to answer message from {0}".format(fromID)); return
     message = [message[i:i + 1024] for i in range(0, len(message), 1024)]
     if targetMode == ts3defines.TextMessageTargetMode.TextMessageTarget_CLIENT:
         for msg in message: self.returnCode = ts3lib.createReturnCode(); ts3lib.requestSendPrivateTextMsg(schid, msg, fromID, self.returnCode)
     elif targetMode == ts3defines.TextMessageTargetMode.TextMessageTarget_CHANNEL:
         if hideprefix:
             for msg in message: self.returnCode = ts3lib.createReturnCode(); ts3lib.requestSendChannelTextMsg(schid, "{0}".format(msg), toID, self.returnCode)
         else:
             for msg in message: self.returnCode = ts3lib.createReturnCode(); ts3lib.requestSendChannelTextMsg(schid, "[url=client://]@[/url]%s: %s" % ( self.clientURL(schid, fromID), msg), toID, self.returnCode)
Beispiel #7
0
 def commandChannelMessage(self, schid, targetMode, toID, fromID, params=""):
     try:
         _p = params.split(" ",1);target = int(_p[0]);message = _p[1]
         if self.cfg.getboolean("general", "debug"): ts3lib.printMessageToCurrentTab("Found Channel ID: {0}".format(target))
     except:
         (error, target) = ts3lib.getChannelOfClient(schid, fromID);message = params
         if self.cfg.getboolean("general", "debug"): ts3lib.printMessageToCurrentTab("Found No Channel ID.")
     (error, ownID) = ts3lib.getClientID(schid)
     (error, ownChan) = ts3lib.getChannelOfClient(schid, ownID)
     if not ownChan == target: ts3lib.requestClientMove(schid, ownID, target, "123")
     ts3lib.requestSendChannelTextMsg(schid, "Message from {0}: {1}".format(self.clientURL(schid, fromID), message), target)
     if not ownChan == target: ts3lib.requestClientMove(schid, ownID, ownChan, "123")
Beispiel #8
0
 def onMenuItemEvent(self, schid, atype, menuItemID, selectedItemID):
     if atype == ts3defines.PluginMenuType.PLUGIN_MENU_TYPE_GLOBAL:
         if menuItemID == 0: self.printContacts()
         elif menuItemID == 1:
             ts3lib.printMessageToCurrentTab("{}{}".format(
                 timestamp(), self.onlineContacts(schid, False)))
     elif atype == ts3defines.PluginItemType.PLUGIN_CHANNEL:
         ts3lib.requestSendChannelTextMsg(schid, self.contactStats(),
                                          selectedItemID)
     elif atype == ts3defines.PluginItemType.PLUGIN_CLIENT:
         ts3lib.requestSendPrivateTextMsg(schid, self.contactStats(),
                                          selectedItemID)
Beispiel #9
0
 def onClientKickFromChannelEvent(self, schid, clientID, oldChannelID,
                                  newChannelID, visibility, kickerID,
                                  kickerName, kickerUniqueIdentifier,
                                  kickMessage):
     if not self.toggle == clientID: return
     try:
         self.count += 1
         ts3lib.requestSendChannelTextMsg(
             schid, "Kick {0}, lol".format(self.count), oldChannelID)
     except:
         from traceback import format_exc
         ts3lib.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR,
                           "pyTSon", 0)
Beispiel #10
0
 def onTextMessageEvent(self, schid, targetMode, toID, fromID, fromName,
                        fromUniqueIdentifier, message, ffIgnored):
     if targetMode != ts3defines.TextMessageTargetMode.TextMessageTarget_CHANNEL:
         return
     if fromUniqueIdentifier != self.botUID: return
     # if fromName != self.botNick: return
     (err, suid) = ts3lib.getServerVariable(
         schid,
         ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER)
     if suid != self.sUID: return
     if not self.msg in message: return
     ts3lib.requestSendChannelTextMsg(schid, "!play", toID)
     self.schid = schid
     self.botCLID = fromID
     QTimer.singleShot(self.delay, self.doBet)
Beispiel #11
0
 def onNetworkReply(self, reply):
     if reply.error() == QNetworkReply.NoError:
         try:
             message = str(
                 json.loads(reply.readAll().data().decode('utf-8')))
             if self.mode:
                 if self.target == 1:
                     ts3.requestSendPrivateTextMsg(self.schid, message,
                                                   self.fromID)
                 if self.target == 2:
                     (error,
                      mych) = ts3.getChannelOfClient(self.schid, self.myid)
                     ts3.requestSendChannelTextMsg(self.schid, message,
                                                   mych)
             else:
                 ts3.printMessageToCurrentTab(str(message))
         except:
             ts3.printMessageToCurrentTab(format_exc())
Beispiel #12
0
 def sendScores(self, schid, scores, mode, string):
     place = 1
     for k, v in scores:
         string += '{place}: {clientURL} {val}\n'.format(
             place=place,
             clientURL=clientURL(schid, k),
             val=self.processVar(v, mode))
         place += 1
     (err, ownid) = ts3lib.getClientID(schid)
     (err, ownchan) = ts3lib.getChannelOfClient(schid, ownid)
     message = [string[i:i + 900] for i in range(0, len(string), 900)]
     # message = re.findall('.{1,1024}(?:\n|$)', string)
     # message = (textwrap.wrap(string, 1024))
     # message = (line.strip() for line in re.findall(r'.{1,80}(?:\s+|$)', string))
     # message = textwrap.wrap(string, 1024, break_long_words=False)
     c = 0
     for msg in message:
         ts3lib.requestSendChannelTextMsg(
             schid, '\n{0}'.format(msg) if c > 0 else msg, ownchan)
         c += 1
Beispiel #13
0
 def sendMessage(self, schid, targetMode, toID):
     x = QWidget()
     clipboard = QApplication.clipboard().text();
     _message = QInputDialog.getMultiLineText(x, "Enter long text here", "", clipboard)
     message = [_message[i:i + self.maxsize] for i in range(0, len(_message), self.maxsize)]
     if targetMode == ts3defines.TextMessageTargetMode.TextMessageTarget_CHANNEL:
         for msg in message:
             error = ts3lib.requestSendChannelTextMsg(schid, "\n"+msg, toID)
             if not error == ts3defines.ERROR_ok: _t = QMessageBox(QMessageBox.Critical, "Error #%s"%error,"Unable to send message to #%s!"%toID);_t.show();return
     elif targetMode == ts3defines.TextMessageTargetMode.TextMessageTarget_CLIENT:
         for msg in message:
             error = ts3lib.requestSendPrivateTextMsg(schid, "\n"+msg, toID)
             if not error == ts3defines.ERROR_ok: _t = QMessageBox(QMessageBox.Critical, "Error #%s"%error,"Unable to send message to #%s!"%toID);_t.show();return
Beispiel #14
0
def answerMessage(schid: int,
                  targetMode: int,
                  fromID: int,
                  message: str,
                  returnCode: str = "",
                  prefix: bool = True):
    mode = TextMessageTargetMode
    if prefix and targetMode == mode.TextMessageTarget_CHANNEL:
        message = "{}: {}".format(
            clientURL(schid, fromID, quote=False, mention=True), message)
    print(message)
    message = [message[i:i + 900] for i in range(0, len(message), 900)]
    if targetMode == mode.TextMessageTarget_SERVER:
        for msg in message:
            ts3lib.requestSendServerTextMsg(schid, msg, returnCode)
    elif targetMode == mode.TextMessageTarget_CHANNEL:
        for msg in message:
            ts3lib.requestSendChannelTextMsg(schid, msg, 0, returnCode)
    elif targetMode == mode.TextMessageTarget_CLIENT:
        for msg in message:
            ts3lib.requestSendPrivateTextMsg(schid, msg, fromID, returnCode)
    else:
        ts3lib.printMessageToCurrentTab("".join(message))
Beispiel #15
0
def csend(message):
    if message == None: return 'no message'

    err, client = ts3lib.getClientID(schid())

    if err:
        return err

    err, channelid = ts3lib.getChannelOfClient(schid(), client)

    if err:
        return err

    return ts3lib.requestSendChannelTextMsg(schid(), message, channelid)
    def processCommand(self, schid, command):
        tokens = command.split(' ')

        if len(tokens) == 0:
            return True

        (err, myid) = ts3lib.getClientID(schid)
        if err != ts3defines.ERROR_ok:
            ts3lib.printMessageToCurrentTab("Error getting client id: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
            return True

        (err, cid) = ts3lib.getChannelOfClient(schid, myid)
        if err != ts3defines.ERROR_ok:
            ts3lib.printMessageToCurrentTab("Error getting channel id: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
            return True

        if tokens[0] == "time":
            err = ts3lib.requestSendChannelTextMsg(schid, "It's %s" % time.asctime(time.localtime(time.time())), cid)
            if err != ts3defines.ERROR_ok:
                ts3lib.printMessageToCurrentTab("Error sending txt message: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
            return True
        elif tokens[0] == "greet":
            (err, svname) = ts3lib.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)
            if err != ts3defines.ERROR_ok:
                ts3lib.printMessageToCurrentTab("Error getting server name: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
                return True

            (err, cname) = ts3lib.getChannelVariableAsString(schid, cid, ts3defines.ChannelProperties.CHANNEL_NAME)
            if err != ts3defines.ERROR_ok:
                ts3lib.printMessageToCurrentTab("Error getting channel name: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
                return True

            err = ts3lib.requestSendChannelTextMsg(schid, "Welcome in %s on %s" % (cname, svname), cid)
            if err != ts3defines.ERROR_ok:
                ts3lib.printMessageToCurrentTab("Error sending txt message: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1]))
            return True
Beispiel #17
0
 def commandSay(self, schid, targetMode, toID, fromID, params=""):
     if targetMode == ts3defines.TextMessageTargetMode.TextMessageTarget_CLIENT:
         ts3lib.requestSendPrivateTextMsg(schid, params, fromID)
     elif targetMode == ts3defines.TextMessageTargetMode.TextMessageTarget_CHANNEL:
         ts3lib.requestSendChannelTextMsg(schid, "{0}: {1}".format(self.clientURL(schid, fromID), params), toID)
Beispiel #18
0
 def sendTextMsg(self, msg):
     err = ts3lib.requestSendChannelTextMsg(self.schid, msg, self.channelID)
     if err != ts3defines.ERROR_ok:
         raise ts3Error("Error sending message to channel: (%s, %s)" %
                        (err, ts3lib.getErrorMessage(err)[1]))
Beispiel #19
0
 def onMenuItemEvent(self, schid, atype, menuItemID, selectedItemID):
     try:
         if atype == ts3defines.PluginMenuType.PLUGIN_MENU_TYPE_GLOBAL:
             if menuItemID == 1: # Message all Clients
                 (error, clients) = ts3lib.getClientList(schid)
                 msgs = self.getText(multiline=True,title="Message all %s clients on this server"%len(clients),text="Enter Private Message")
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     for msg in msgs: ts3lib.requestSendPrivateTextMsg(schid, msg, c)
             elif menuItemID == 2: # OffineMessage all Clients
                 (error, clients) = ts3lib.getClientList(schid)
                 (error, ownID) = ts3lib.getClientID(schid)
                 uids = []
                 for c in clients:
                     if c == ownID: continue
                     (error, uid) = ts3lib.getClientVariableAsString(schid, c, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
                     uids.append(uid)
                 if not self.dlg: self.dlg = MessageDialog(schid, uids)
                 self.dlg.show();self.dlg.raise_();self.dlg.activateWindow()
             elif menuItemID == 3: # Message all Channels
                 (error, channels) = ts3lib.getChannelList(schid)
                 msgs = self.getText(multiline=True,title="Message all %s channels on this server"%len(channels),text="Enter Channel Message")
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in channels:
                     error = ts3lib.requestClientMove(schid, ownID, c, "123")
                     if not error == ts3defines.ERROR_ok: continue
                     for msg in msgs: ts3lib.requestSendChannelTextMsg(schid, msg, c)
             elif menuItemID == 4: # Poke all Clients
                 (error, clients) = ts3lib.getClientList(schid)
                 msgs = self.getText(title="Poke all %s clients on this server"%len(clients),text="Enter Poke Message",max=100)
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     for msg in msgs: ts3lib.requestClientPoke(schid, c, msg)
             elif menuItemID == 5: # ChannelKick all Clients
                 (error, clients) = ts3lib.getClientList(schid)
                 msg = self.getText(title="Kick all %s clients on this server from their channel"%len(clients),text="Enter Kick Reason",multimsg=False,max=80)
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     ts3lib.requestClientKickFromChannel(schid, c, msg)
             elif menuItemID == 6: # ChannelBan all Clients
                 (error, clients) = ts3lib.getClientList(schid)
                 msg = self.getText(title="ChannelBan all %s clients on this server"%len(clients),text="Enter Kick Reason",multimsg=False,max=80)
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     (error, chan) = ts3lib.getChannelOfClient(schid, selectedItemID)
                     (error, dbid) = ts3lib.getClientVariableAsUInt64(schid, c, ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID)
                     ts3lib.requestSetClientChannelGroup(schid, [self.sbgroup], [chan], [dbid])
                     ts3lib.requestClientKickFromChannel(schid, c, msg)
             elif menuItemID == 7: # Kick all Clients
                 (error, clients) = ts3lib.getClientList(schid)
                 msg = self.getText(title="Kick all %s clients from this server"%len(clients),text="Enter Kick Reason",multimsg=False,max=80)
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     ts3lib.requestClientKickFromServer(schid, c, msg)
             elif menuItemID == 8: # Ban all Clients
                 (error, clients) = ts3lib.getClientList(schid)
                 msg = self.getText(title="Ban all %s clients from this server"%len(clients),text="Enter Ban Reason",multimsg=False,max=80)
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     ts3lib.banclient(schid, c, -1, msg)
             elif menuItemID == 9: # Delete all Channels
                 (error, channels) = ts3lib.getChannelList(schid)
                 confirmation = self.confirm('Delete all Channels', 'Do you really want to delete all {0} channels on this server?'.format(len(channels)))
                 if not confirmation: return
                 for c in channels: ts3lib.requestChannelDelete(schid, c, True)
         elif atype == ts3defines.PluginMenuType.PLUGIN_MENU_TYPE_CHANNEL:
             if menuItemID == 1: # Message all Clients
                 (error, clients) = ts3lib.getChannelClientList(schid, selectedItemID)
                 (err, name) = ts3lib.getChannelVariableAsString(schid, selectedItemID, ts3defines.ChannelProperties.CHANNEL_NAME)
                 msgs = self.getText(multiline=True,title="Message to all %s clients in channel \"%s\""%(len(clients),name),text="Enter Private Message")
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     for msg in msgs: ts3lib.requestSendPrivateTextMsg(schid, msg, c)
             if menuItemID == 2: # OfflineMessage all Clients
                 (error, clients) = ts3lib.getChannelClientList(schid, selectedItemID)
                 (error, ownID) = ts3lib.getClientID(schid)
                 uids = []
                 for c in clients:
                     if c == ownID: continue
                     (error, uid) = ts3lib.getClientVariableAsString(schid, c, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER)
                     uids.append(uid)
                 if not self.dlg: self.dlg = MessageDialog(schid, uids)
                 self.dlg.show();self.dlg.raise_();self.dlg.activateWindow()
             elif menuItemID == 3: # Poke all Clients
                 (error, clients) = ts3lib.getChannelClientList(schid, selectedItemID)
                 (err, name) = ts3lib.getChannelVariableAsString(schid, selectedItemID, ts3defines.ChannelProperties.CHANNEL_NAME)
                 msgs = self.getText(title="Poke all %s clients in channel \"%s\""%(len(clients),name),text="Enter Poke Message",max=100)
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     for msg in msgs: ts3lib.requestClientPoke(schid, c, msg)
             elif menuItemID == 4: # ChannelKick all Clients
                 (error, clients) = ts3lib.getChannelClientList(schid,selectedItemID)
                 (err, name) = ts3lib.getChannelVariableAsString(schid, selectedItemID, ts3defines.ChannelProperties.CHANNEL_NAME)
                 msg = self.getText(title="Kick all %s clients from channel \"%s\""%(len(clients),name),text="Enter Kick Reason",multimsg=False,max=80)
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     ts3lib.requestClientKickFromChannel(schid, c, msg)
             elif menuItemID == 5: # ChannelBan all Clients
                 (error, clients) = ts3lib.getChannelClientList(schid,selectedItemID)
                 (err, name) = ts3lib.getChannelVariableAsString(schid, selectedItemID, ts3defines.ChannelProperties.CHANNEL_NAME)
                 msg = self.getText(title="ChannelBan all %s clients from channel \"%s\""%(len(clients),name),text="Enter Kick Reason",multimsg=False,max=80)
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     (error, dbid) = ts3lib.getClientVariableAsUInt64(schid, c, ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID)
                     ts3lib.requestSetClientChannelGroup(schid, [self.sbgroup], [selectedItemID], [dbid])
                     ts3lib.requestClientKickFromChannel(schid, c, msg)
             elif menuItemID == 6: # Kick all Clients
                 (error, clients) = ts3lib.getChannelClientList(schid,selectedItemID)
                 (err, name) = ts3lib.getChannelVariableAsString(schid, selectedItemID, ts3defines.ChannelProperties.CHANNEL_NAME)
                 msg = self.getText(title="Kick all %s clients in channel \"%s\" from this server"%(len(clients),name),text="Enter Kick Reason",multimsg=False,max=80)
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     ts3lib.requestClientKickFromServer(schid, c, msg)
             elif menuItemID == 7: # Ban all Clients
                 (error, clients) = ts3lib.getChannelClientList(schid,selectedItemID)
                 (err, name) = ts3lib.getChannelVariableAsString(schid, selectedItemID, ts3defines.ChannelProperties.CHANNEL_NAME)
                 msg = self.getText(title="Ban all %s clients in channel \"%s\""%(len(clients),name),text="Enter Ban Reason",multimsg=False,max=80)
                 if bool(self.ok) != True:return
                 (error, ownID) = ts3lib.getClientID(schid)
                 for c in clients:
                     if c == ownID: continue
                     ts3lib.banclient(schid, c, -1, msg)
     except: from traceback import format_exc;ts3lib.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR, "pyTSon", 0)