def onChannelGroupListFinishedEvent(self, schid): (error, sname) = ts3.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME) (error, suid) = ts3.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER) # Start checking for channelgroup updates or if server is known self.checkServer(schid, sname, suid, self.channel_group_list, self.channel_group_list_name) # Reset temporary lists self.channel_group_list = [] self.channel_group_list_name = []
def onClientMoveEvent(self, schid, clientID, oldChannelID, newChannelID, visibility, moveMessage): if self.debug: ts3lib.printMessageToCurrentTab( "oldChannelID: {0}".format(oldChannelID)) if not oldChannelID == 0: return (error, _clid) = ts3lib.getClientID(schid) if self.debug: ts3lib.printMessageToCurrentTab( "_clid: {0} | clientID: {1}".format(_clid, clientID)) if clientID == _clid: return if self.debug: ts3lib.printMessageToCurrentTab( "newChannelID: {0} | self.default: {1}".format( newChannelID, self.default)) if not newChannelID == self.default: return #(error, uid) = ts3lib.getClientVariableAsString(schid, clientID, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER) #if self.debug: ts3lib.printMessageToCurrentTab("uid: {0} | self.tmp: {1}".format(uid,self.tmp)) #if uid in self.tmp: return (error, suid) = ts3lib.getServerVariableAsString( schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER) if self.debug: ts3lib.printMessageToCurrentTab( "suid: {0} | self.cfg.sections(): {1} | self.cfg.has_section(suid): {2}" .format(suid, self.cfg.sections(), self.cfg.has_section(suid))) if not self.cfg.has_section(suid): return self.update = clientID ts3lib.requestClientVariables(schid, clientID)
def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber): if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED: (error, uid) = ts3lib.getServerVariableAsString( schid, ts3defines.VirtualServerProperties. VIRTUALSERVER_UNIQUE_IDENTIFIER) if uid in self.subAll: self.subscribeAll(schid) elif uid in self.subNone: self.unsubscribeAll(schid) elif uid in self.subOpen: self.subscribeOpen(schid)
def iconID(self): (err, icon) = ts3lib.getServerVariableAsString( self.schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_ICON_ID) if err != ts3defines.ERROR_ok: raise ts3Error("Error getting server icon id: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1])) return icon
def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber): if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED: (error, suid) = ts3lib.getServerVariableAsString( schid, ts3defines.VirtualServerProperties. VIRTUALSERVER_UNIQUE_IDENTIFIER) if self.cfg.has_section(suid): self.default == self.getDefaultChannel(schid) elif newStatus == ts3defines.ConnectStatus.STATUS_DISCONNECTED: self.default = 0
def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber): if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED: if ts3lib.getServerVariableAsString( schid, ts3defines.VirtualServerProperties. VIRTUALSERVER_UNIQUE_IDENTIFIER ) == "QTRtPmYiSKpMS8Oyd4hyztcvLqU=": return # if not self.timer.isActive(): self.timer.start(int(self.config.get('GENERAL', 'refresh'))*1000); elif newStatus == ts3defines.ConnectStatus.STATUS_DISCONNECTED: if self.timer.isActive(): self.timer.stop()
def name(self): if self._name: return self._name (err, svname) = ts3lib.getServerVariableAsString( self.schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME) if err != ts3defines.ERROR_ok: raise ts3Error("Error getting server name: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1])) self._name = svname return svname
def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber): if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED: (error, uid) = ts3lib.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER) self.schid = schid if uid in self.subAll: QTimer.singleShot(2500, self.subscribeAll) elif uid in self.subNone: QTimer.singleShot(2500, self.unsubscribeAll) elif uid in self.subOpen: QTimer.singleShot(2500, self.subscribeOpen) if uid == "QTRtPmYiSKpMS8Oyd4hyztcvLqU=": self.toSub = [136205,136209,545989]#support1-3,48=afk,46=iloveradio QTimer.singleShot(2500, self.subChannels)
def name(self): if "name" in self.cache: return self.cache["name"] err, n = ts3lib.getServerVariableAsString( self.schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME) if err != ts3defines.ERROR_ok: _errprint("Error getting server name", err, self.schid) return "ERROR_UNABLE_TO_GET_SERVERNAME" else: self.cache["name"] = n return n
def name(self): if "name" in self.cache: return self.cache["name"] err, n = ts3lib.getServerVariableAsString(self.schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME) if err != ts3defines.ERROR_ok: _errprint("Error getting server name", err, self.schid) return "ERROR_UNABLE_TO_GET_SERVERNAME" else: self.cache["name"] = n return n
def commandRegister(self, schid, targetMode, toID, fromID, params=""): (error, uid) = ts3lib.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER) if uid == "QTRtPmYiSKpMS8Oyd4hyztcvLqU=": # GommeHD (error, uid) = ts3lib.getClientVariableAsString(schid, int(params), ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER) self.answerMessage(schid, targetMode, toID, int(params), ""+ "Um dich auf diesem Teamspeak Server zu registrieren musst du folgendes tun:\n\n"+ "1. Auf den Minecraft Server [color=green]gommehd.net[/color] joinen.\n"+ "2. In den Minecraft chat [color=red]/ts set {0}[/color] eingeben.\n".format(uid)+ "3. Im Teamspeak Chat dem User [URL=client://0/serveradmin~Gomme-Bot]Gomme-Bot[/URL] deinen Minecraft Namen schreiben (Groß/Kleinschreibung beachten)\n"+ "4. Wenn die Registrierung erfolgreich warst erhälst du die Server Gruppe \"Registriert\". Es kann eine Zeit lang dauern bis dein Minecraft Kopf hinter deinem Namen erscheint.") elif uid == "U3UjHePU9eZ9bvnzIyLff4lvXBM=": pass else: self.answerMessage(schid, targetMode, toID, fromID, "Server not recognized or does not have a registration feature.")
def setClientChannelGroup(self, schid, status, cid, chid): (error, suid) = ts3.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER) (error, curr_channelgroup) = ts3.getClientVariableAsString(schid, cid, ts3defines.ClientPropertiesRare.CLIENT_CHANNEL_GROUP_ID) db = self.db.exec_("SELECT db_f_channelgroup, db_b_channelgroup FROM server WHERE db_suid='"+str(suid)+"' LIMIT 1") if not self.db.lastError().isValid(): if db.next(): if status == 1 and (db.value("db_b_channelgroup") == "" or db.value("db_b_channelgroup") == int(curr_channelgroup)): return if status == 0 and (db.value("db_f_channelgroup") == "" or db.value("db_f_channelgroup") == int(curr_channelgroup)): return (error, cdbid) = ts3.getClientVariableAsUInt64(schid, cid, ts3defines.ClientPropertiesRare.CLIENT_DATABASE_ID) group = None if status == 1: group = db.value("db_b_channelgroup") if status == 0: group = db.value("db_f_channelgroup") ts3.requestSetClientChannelGroup(schid, [group], [chid], [cdbid], self.error_setClientChannelGroup)
def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber): if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED: (error, uid) = ts3lib.getServerVariableAsString(schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER) if uid == self.cfg.get("general", "uid"): # ts3lib.getChannelIDFromChannelNames(serverConnectionHandlerID, channelNameArray) (error, clist) = ts3lib.getChannelList(schid) for c in clist: (error, permanent) = ts3lib.getChannelVariableAsInt(schid, c, ts3defines.ChannelProperties.CHANNEL_FLAG_PERMANENT) if permanent: (error, name) = ts3lib.getChannelVariableAsString(schid, c, ts3defines.ChannelProperties.CHANNEL_NAME) if name.startswith("Support "): self.supchans.append(c) elif name.startswith("[cspacer10]● Support"): self.supmain = c self.cfg.set("general", "enabled", "True") else: self.cfg.set("general", "enabled", "False")
def __init__(self, schid): """ Instantiates a new ServerCache object referenced by the server connection handler id (an Exception is raised if the path in the filesystem could not be located). @param schid: the ID of the serverconnection @type schid: int """ err, uid = (ts3lib.getServerVariableAsString(schid, ts3defines.VirtualServerProperties. VIRTUALSERVER_UNIQUE_IDENTIFIER)) if err != ts3defines.ERROR_ok: raise Exception("Error getting Server unique identifier: %s" % err) self.path = os.path.join(ts3lib.getConfigPath(), "cache", base64.b64encode( uid.encode("utf-8")).decode("utf-8")) if not os.path.isdir(self.path): raise Exception("No such file or directory: %s" % self.path)
def onUpdateClientEvent(self, schid, clientID, invokerID, invokerName, invokerUniqueIdentifier): if not self.update == clientID: return self.update = 0 (error, connects) = ts3lib.getClientVariableAsUInt64( schid, clientID, ts3defines.ClientPropertiesRare.CLIENT_TOTALCONNECTIONS) (error, uid) = ts3lib.getClientVariableAsString( schid, clientID, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER) if self.debug: ts3lib.printMessageToCurrentTab( "error: {0} | connects: {1} | uid: {2}".format( error, connects, uid)) if connects > 1 and not uid == "x63jNGEr/PXnu9l3bFECzMzWfXk=": return (error, suid) = ts3lib.getServerVariableAsString( schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER) (error, country) = ts3lib.getClientVariableAsString( schid, clientID, ts3defines.ClientPropertiesRare.CLIENT_COUNTRY) if self.debug: ts3lib.printMessageToCurrentTab("error: {0} | country: {1}".format( error, country)) msg = self.cfg.get(suid, country, fallback=self.cfg.get(suid, 'US')) if '{nick}' in msg: msg = msg.replace('{nick}', self.clientURL(schid, clientID, uid)) if '{country}' in msg: msg = msg.replace('{country}', country) if '{cid}' in msg: msg = msg.replace('{cid}', clientID) if '{uid}' in msg: msg = msg.replace('{uid}', uid) if '{connects}' in msg: msg = msg.replace('{connects}', connects) msg = [msg[i:i + 1024] for i in range(0, len(msg), 1024)] for message in msg: ts3lib.requestSendPrivateTextMsg(schid, "{0}".format(message), clientID) (error, ownid) = ts3lib.getClientID(schid) (error, _uid) = ts3lib.getClientVariableAsString( schid, ownid, ts3defines.ClientProperties.CLIENT_UNIQUE_IDENTIFIER) ts3lib.clientChatClosed(schid, uid, clientID) ts3lib.printMessageToCurrentTab( "Sent client {0} the welcome message for {1}".format( clientID, suid))
def __init__(self, schid): """ Instantiates a new ServerCache object referenced by the server connection handler id (an Exception is raised if the path in the filesystem could not be located). @param schid: the ID of the serverconnection @type schid: int """ err, uid = (ts3lib.getServerVariableAsString( schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_UNIQUE_IDENTIFIER) ) if err != ts3defines.ERROR_ok: raise Exception("Error getting Server unique identifier: %s" % err) self.path = os.path.join( ts3lib.getConfigPath(), "cache", base64.b64encode(uid.encode("utf-8")).decode("utf-8")) if not os.path.isdir(self.path): raise Exception("No such file or directory: %s" % self.path)
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
def getServerName(serverConnectionHandlerID): return ts3lib.getServerVariableAsString( serverConnectionHandlerID, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME)[1]
def onConnectStatusChangeEvent(self, schid, newStatus, errorNumber): if newStatus == ts3defines.ConnectStatus.STATUS_CONNECTION_ESTABLISHED: (error, uid) = ts3lib.getServerVariableAsString( schid, ts3defines.VirtualServerProperties. VIRTUALSERVER_UNIQUE_IDENTIFIER) if uid == self.supserver: self.toggle(True)
def setStatus(self, schid): err, ownid = ts3.getClientID(schid) err, schids = ts3.getServerConnectionHandlerList() regex = re.compile(r'.*(<{0}>.*</{0}>).*'.format(self.tag), re.IGNORECASE) host = "" port = 9987 pw = "" name = "" nick = "" err, host, port, pw = ts3.getServerConnectInfo(schid) err, name = ts3.getServerVariable( schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_NAME) err, nick = ts3.getServerVariable( schid, 83 ) # ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_NICKNAME if err == ts3defines.ERROR_ok and nick.strip(): nick = nick.split(":") err, ip = ts3.getConnectionVariableAsString( schid, ownid, ts3defines.ConnectionProperties.CONNECTION_SERVER_IP) if err != ts3defines.ERROR_ok or not ip.strip(): err, ip = ts3.getServerVariableAsString( schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_IP) err, port = ts3.getConnectionVariableAsString( schid, ownid, ts3defines.ConnectionProperties.CONNECTION_SERVER_PORT) if err != ts3defines.ERROR_ok or not port or port < 1: err, port = ts3.getServerVariableAsString( schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_PORT) for tab in schids: err, meta_data = ts3.getClientSelfVariable( tab, ts3defines.ClientProperties.CLIENT_META_DATA) meta_data = regex.sub("", meta_data) if tab == schid: ts3.setClientSelfVariableAsInt( tab, ts3defines.ClientPropertiesRare.CLIENT_AWAY, ts3defines.AwayStatus.AWAY_NONE) else: err, away = ts3.getClientSelfVariable( tab, ts3defines.ClientPropertiesRare.CLIENT_AWAY) if away != ts3defines.AwayStatus.AWAY_ZZZ: ts3.setClientSelfVariableAsInt( tab, ts3defines.ClientPropertiesRare.CLIENT_AWAY, ts3defines.AwayStatus.AWAY_ZZZ) if self.cfg.getboolean('general', 'enabled'): if host: newmeta = xml.Element(self.tag) c = xml.SubElement(newmeta, "tab") c.set("i", str(schid)) if name: c.text = escape(name.strip()) c.set("h", escape(host)) if port and port != 9987: c.set("port", "{}".format(port)) if pw and self.cfg.getboolean('general', 'pw'): c.set("p", pw) # if ip and ip.strip(): c.set("ip", ip) # if nick: c.set("nick", ":".join(nick)) meta_data = "{old}{new}".format( old=meta_data, new=xml.tostring(newmeta).decode("utf-8")) # meta_data = "{}<server>{}{}</server>".format(meta_data, ip, ":" + port if port else "") try: name = name[:78] + (name[78:] and '..') except: pass _away_message = self.cfg.get('general', 'status') if "{" in _away_message: _away_message = _away_message\ .replace('{host}', host if host else "")\ .replace('{nick}', nick[0] if nick and len(nick) > 0 else "")\ .replace('{name}', name if name else "")\ .replace('{nickname}', nick[0] if nick else name)\ .replace('{ip}', ip if ip else "")\ .replace('{port}', str(port) if port else "") err, away_message = ts3.getClientSelfVariable( tab, ts3defines.ClientPropertiesRare.CLIENT_AWAY_MESSAGE) if away_message != _away_message: ts3.setClientSelfVariableAsString( tab, ts3defines.ClientPropertiesRare.CLIENT_AWAY_MESSAGE, _away_message) ts3.setClientSelfVariableAsString( tab, ts3defines.ClientProperties.CLIENT_META_DATA, meta_data) ts3.flushClientSelfUpdates(tab)