def onClientPokeEvent(self, serverConnectionHandlerID, fromClientID, pokerName, pokerUID, message, ffIgnored): #is it me? (err, schids) = ts3lib.getServerConnectionHandlerList() if err == ts3defines.ERROR_ok: for schid in schids: (err, myid) = ts3lib.getClientID(schid) if err == ts3defines.ERROR_ok: if fromClientID == myid: return 0 else: ts3lib.printMessageToCurrentTab( "error getting own client id") else: ts3lib.printMessageToCurrentTab("error getting schids") (err, name) = ts3lib.getClientVariableAsString( serverConnectionHandlerID, fromClientID, ts3defines.ClientProperties.CLIENT_NICKNAME) if err != ts3defines.ERROR_ok: err = ts3lib.requestClientPoke(serverConnectionHandlerID, fromClientID, "?") else: err = ts3lib.requestClientPoke(serverConnectionHandlerID, fromClientID, "?") self.lastpoker = (serverConnectionHandlerID, fromClientID) if err != ts3defines.ERROR_ok: ts3lib.printMessageToCurrentTab("poke error: %d" % err) return 0 else: return 0
def restoreTabs(self): try: err, schids = ts3lib.getServerConnectionHandlerList() if err != ERROR_ok: return if len(schids) > 1: return for schid in schids: (err, status) = ts3lib.getConnectionStatus(schid) if err != ERROR_ok: return if status != ConnectStatus.STATUS_DISCONNECTED: return self._tabs = {} self._timers = [] with open(self.backup_file) as f: self._tabs = load(f) i = 0 self._delay = self.delay for tab in self._tabs: i += 1 # if self._tabs[tab]["status"] == ConnectStatus.STATUS_CONNECTION_ESTABLISHED: timer = QTimer() self._timers.append(timer) timer.singleShot(self._delay, self.restoreTab) # self.restoreTab(tab) self._delay += self.increase except: ts3lib.logMessage(format_exc(), LogLevel.LogLevel_ERROR, "pyTSon", 0)
def setCustomBadges(self): # try: if self.mode == HookMode.NONE: return overwolf = self.cfg.getboolean('general', 'overwolf') badges = self.cfg.get('general', 'badges').split(",") # if len(badges) > 0: badges += ['0c4u2snt-ao1m-7b5a-d0gq-e3s3shceript'] (err, schids) = ts3lib.getServerConnectionHandlerList() reg = compile('3(?:\.\d+)* \[Build: \d+\]') for schid in schids: _badges = badges err, ver = ts3lib.getServerVariable( schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_VERSION) err, platform = ts3lib.getServerVariable( schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_PLATFORM) if getServerType(schid, reg) in [ ServerInstanceType.TEASPEAK, ServerInstanceType.UNKNOWN ]: _badges = [x for x in badges if not x in self.extbadges][:3] _badges = buildBadges(_badges, overwolf) sendCommand(name=self.name, cmd=_badges, schid=schid, mode=self.mode)
def setCustomBadges(self): try: overwolf = self.cfg.getboolean('general', 'overwolf') badges = self.cfg.get('general', 'badges').split(",") # if len(badges) > 0: badges += ['0c4u2snt-ao1m-7b5a-d0gq-e3s3shceript'] (err, schids) = ts3lib.getServerConnectionHandlerList() reg = compile('3(?:\.\d+)* \[Build: \d+\]') for schid in schids: _badges = badges err, ver = ts3lib.getServerVariable( schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_VERSION) err, platform = ts3lib.getServerVariable( schid, ts3defines.VirtualServerProperties.VIRTUALSERVER_PLATFORM) if getServerType(schid, reg) in [ ServerInstanceType.TEASPEAK, ServerInstanceType.UNKNOWN ]: _badges = [x for x in badges if not x in self.extbadges][:3] _badges = buildBadges(_badges, overwolf) sendCommand(self.name, _badges, schid) except: ts3lib.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR, "pyTSon", 0)
def servers(self): (err, srids) = ts3lib.getServerConnectionHandlerList() if err != ts3defines.ERROR_ok: raise ts3Error( "Error getting server connection handler ID list: (%s, %s)" % (err, ts3lib.getErrorMessage(err)[1])) for schid in srids: yield self.getServer(schid)
def setCustomBadges(self): try: overwolf = self.cfg.getboolean('general', 'overwolf') badges = self.cfg.get('general', 'badges').split(",") # if len(badges) > 0: badges += ['0c4u2snt-ao1m-7b5a-d0gq-e3s3shceript'] (err, schids) = ts3lib.getServerConnectionHandlerList() for schid in schids: sendCommand(self.name, buildBadges(badges, overwolf), schid) except: ts3lib.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR, "pyTSon", 0)
def __init__(self): self.ts3host = ts3SessionHost(self) err, schids = ts3lib.getServerConnectionHandlerList() for schid in schids: (err, status) = ts3lib.getConnectionStatus(schid) self.onConnectStatusChangeEvent(schid, status, err) log( self, LogLevel.LogLevel_DEBUG, "[color=orange]{name}[/color] Plugin for pyTSon by [url=https://github.com/{author}]{author}[/url] loaded." .format(name=self.name, author=self.author), 0)
def __init__(self): self.timer.timeout.connect(self.tick) self.timer.setTimerType(2) err, schids = ts3lib.getServerConnectionHandlerList() for schid in schids: err, status = ts3lib.getConnectionStatus(schid) self.onConnectStatusChangeEvent(schid, status, err) if PluginHost.cfg.getboolean("general", "verbose"): ts3lib.printMessageToCurrentTab( "{0}[color=orange]{1}[/color] Plugin for pyTSon by [url=https://github.com/{2}]{2}[/url] loaded." .format(timestamp(), self.name, self.author))
def printQueries(self): (err, schids) = ts3lib.getServerConnectionHandlerList() for schid in schids: (err, cids) = ts3lib.getChannelList(schid) for cid in cids: (err, clids) = ts3lib.getChannelClientList(schid, cid) msg = [] for clid in clids: (err, ctype) = ts3lib.getClientVariable(schid, clid, ts3defines.ClientPropertiesRare.CLIENT_TYPE) if ctype != ts3defines.ClientType.ClientType_SERVERQUERY: continue msg.append(clientURL(schid, clid)) if len(msg) < 1: continue ts3lib.printMessage(schid, "<{0}> {1} has [b]{2}[/b] Query Clients: {3}".format(time(), channelURL(schid, cid), len(msg), ", ".join(msg)), ts3defines.PluginMessageTarget.PLUGIN_MESSAGE_TARGET_SERVER)
def __init__(self): self.ts3host = ts3SessionHost(self) err, schids = ts3lib.getServerConnectionHandlerList() for schid in schids: (err, status) = ts3lib.getConnectionStatus(schid) self.onConnectStatusChangeEvent(schid, status, err) if PluginHost.cfg.getboolean("general", "verbose"): i = 1 for active in PluginHost.active: print(i, active) i += 1 ts3lib.printMessageToCurrentTab( "{0}[color=orange]{1}[/color] Plugin for pyTSon by [url=https://github.com/{2}]{2}[/url] loaded." .format(timestamp(), self.name, self.author))
def setStatus(self, schid): try: err, ownid = ts3.getClientID(schid) err, schids = ts3.getServerConnectionHandlerList() regex = re.compile(r'.*(<{0}>.*</{0}>).*'.format(self.tag), re.IGNORECASE) 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_message = ts3.getClientSelfVariable( tab, ts3defines.ClientPropertiesRare.CLIENT_AWAY_MESSAGE) 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) host = "" port = 0 name = "" if self.cfg.getboolean('general', 'enabled'): err, host, port, pw = ts3.getServerConnectInfo(schid) # err, ip = ts3.getConnectionVariableAsString(schid, ownid, ts3defines.ConnectionProperties.CONNECTION_SERVER_IP) # err, port = ts3.getConnectionVariableAsString(schid, ownid, ts3defines.ConnectionProperties.CONNECTION_SERVER_PORT) # err, ip = ts3.getServerVariableAsString(schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_IP) # err, port = ts3.getServerVariableAsString(schid, ts3defines.VirtualServerPropertiesRare.VIRTUALSERVER_PORT) if host: newmeta = xml.Element(self.tag) c = xml.SubElement(newmeta, "tab") c.set("id", str(schid)) err, name = ts3.getServerVariable( schid, ts3defines.VirtualServerProperties. VIRTUALSERVER_NAME) if name: c.text = escape(name.strip()) c.set("host", escape(host)) if port and port != 9987: c.set("port", "{}".format(port)) if pw and self.cfg.getboolean('general', 'pw'): c.set("pw", pw) 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 "") _away_message = self.cfg.get('general', 'status').replace( '{host}', host if host else "").replace( '{name}', name if name else "").replace( '{port}', str(port) if port else "") 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) except: from traceback import format_exc ts3.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR, "pyTSon", 0) pass
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)