{"id":27133227,"url":"https://github.com/DerTyp7/react-teamspeak-remote-app-api","last_synced_at":"2025-04-07T23:20:04.927Z","repository":{"id":183324584,"uuid":"669936212","full_name":"DerTyp7/react-teamspeak-remote-app-api","owner":"DerTyp7","description":"React hook/api for the TeamSpeak5 remote app feature","archived":false,"fork":false,"pushed_at":"2025-01-24T12:53:08.000Z","size":96,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T13:28:27.751Z","etag":null,"topics":["api","hook","react","reactjs","remote","remoteapp","teamspeak","teamspeak5","ts5","typescript","typescript-react"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DerTyp7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-23T23:00:27.000Z","updated_at":"2025-01-24T12:30:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"38235bcd-c98c-4f93-9453-62a7a1275572","html_url":"https://github.com/DerTyp7/react-teamspeak-remote-app-api","commit_stats":{"total_commits":15,"total_committers":1,"mean_commits":15.0,"dds":0.0,"last_synced_commit":"7362d80a9e6dfcb062f30de68b13f6ed55289cc8"},"previous_names":["dertyp7/react-ts5-remote-app-api","dertyp7/react-teamspeak-remote-app-api"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DerTyp7%2Freact-teamspeak-remote-app-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DerTyp7%2Freact-teamspeak-remote-app-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DerTyp7%2Freact-teamspeak-remote-app-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DerTyp7%2Freact-teamspeak-remote-app-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DerTyp7","download_url":"https://codeload.github.com/DerTyp7/react-teamspeak-remote-app-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247744486,"owners_count":20988806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","hook","react","reactjs","remote","remoteapp","teamspeak","teamspeak5","ts5","typescript","typescript-react"],"created_at":"2025-04-07T23:20:03.726Z","updated_at":"2025-04-07T23:20:04.897Z","avatar_url":"https://github.com/DerTyp7.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# React TeamSpeak5/6 RemoteApp API\n\n[![npm](https://img.shields.io/npm/v/react-teamspeak-remote-app-api.svg)](https://www.npmjs.com/package/react-teamspeak-remote-app-api) ![downloads](https://img.shields.io/npm/dt/react-teamspeak-remote-app-api.svg)\n\nThis is a ReactJS hook for the TeamSpeak5/6 RemoteApp API.\n\nIt gathers all the events and methods from the API and makes them available as React states.\n\nPlease note that this is still a work in progress and not all events and methods are implemented yet.\n\nProjects which are using this hook: [TeamSpeak OBS Overlay](https://github.com/DerTyp7/teamspeak-obs-overlay)\n\n## Table of Contents\n\n- [React TeamSpeak5/6 RemoteApp API](#react-teamspeak56-remoteapp-api)\n  - [Table of Contents](#table-of-contents)\n  - [Installation](#installation)\n  - [Usage](#usage)\n  - [Examples](#examples)\n    - [Get all clients in the current channel](#get-all-clients-in-the-current-channel)\n  - [Types](#types)\n    - [IConnection](#iconnection)\n    - [IChannel](#ichannel)\n    - [IClient](#iclient)\n\n## Installation\n\n```bash\nnpm install react-teamspeak-remote-app-api\n```\n\n## Usage\n\n```Typescript\nimport useTSRemoteApp, { IClient } from \"react-teamspeak-remote-app-api\";\n\nexport default function App() {\n  const {\n      clients,\n      channels,\n      connections,\n      activeConnectionId,\n      currentConnection,\n      currentChannel,\n      currentClient,\n    clientsInChannel,\n   } = useTSRemoteApp({\n         remoteAppPort: 5899\n      });\n\n ...\n}\n```\n\n## Examples\n\n### Get all clients in the current channel\n\n```Typescript\nimport useTSRemoteApp, { IClient } from \"react-teamspeak-remote-app-api\";\n\ndefault function App() {\n  const { clientsInChannel } = useTSRemoteApp({\n    remoteAppPort: 5899,\n  });\n\n  return (\n    \u003cdiv className=\"App\"\u003e\n     {clientsInChannel.map((client) =\u003e {\n        return \u003cdiv key={client.id}\u003e{client.properties.nickname}\u003c/div\u003e;\n      })}\n    \u003c/div\u003e\n  );\n}\n```\n\n## Types\n\nThe types are based on the TeamSpeak5 message types.\n\n### IConnection\n\n```Typescript\ninterface IConnection {\n  channelInfos?: IChannelInfos;\n  clientId: number;\n  clientInfos?: IClientInfo[];\n  id: number;\n  properties?: IServerProperties;\n}\n\ninterface IServerProperties {\n  antiFloodPointsNeededCommandBlock: number;\n  antiFloodPointsNeededIpBlock: number;\n  antiFloodPointsNeededPluginBlock: number;\n  antiFloodPointsTickReduce: number;\n  askForPrivilegeKeyAfterNickname: boolean;\n  askForPrivilegeKeyForChannelCreation: boolean;\n  askForPrivilegeKeyForModify: boolean;\n  awayMessage: string;\n  badges: string;\n  channelGroupId: string;\n  channelGroupInheritedChannelId: string;\n  clientType: number;\n  connectionBandwidthReceived: number;\n  connectionBandwidthSent: number;\n  connectionClientIp: string;\n  connectionConnectedTime: number;\n  connectionFiletransferBandwidthReceived: number;\n  connectionFiletransferBandwidthSent: number;\n  connectionPacketloss: number;\n  connectionPing: number;\n  connectionPacketsReceived: number;\n  connectionPacketsSent: number;\n  connectionPort: number;\n  connectionQueryBandwidthReceived: number;\n  connectionQueryBandwidthSent: number;\n  connectionServerIp: string;\n  connectionServerPort: number;\n  connectionThrottleBandwidthReceived: number;\n  connectionThrottleBandwidthSent: number;\n  country: string;\n  created: number;\n  defaultChannel: string;\n  defaultChannelPassword: string;\n  defaultServerGroup: string;\n  defaultToken: string;\n  flagAvatar: string;\n  iconId: number;\n  inputHardware: boolean;\n  inputMuted: boolean;\n  isChannelCommander: boolean;\n  isMuted: boolean;\n  isPrioritySpeaker: boolean;\n  isRecording: boolean;\n  isTalker: boolean;\n  isTts: boolean;\n  metaData: string;\n  monthBytesDownloaded: number;\n  monthBytesUploaded: number;\n  myteamspeakAvatar: string;\n  myteamspeakId: string;\n  neededServerQueryViewPower: number;\n  nickname: string;\n  nicknamePhonetic: string;\n  outputHardware: boolean;\n  outputMuted: boolean;\n  outputOnlyMuted: boolean;\n  permissionHints: number;\n  platform: string;\n  serverPassword: string;\n  signedBadges: string;\n  talkPower: number;\n  talkRequest: number;\n  talkRequestMsg: string;\n  totalBytesDownloaded: number;\n  totalBytesUploaded: number;\n  totalConnections: number;\n  type: number;\n  uniqueIdentifier: string;\n  unreadMessages: number;\n  userTag: string;\n  version: string;\n  volumeModificator: number;\n}\n```\n\n### IChannel\n\n```Typescript\ninterface IChannel {\n  id: number;\n  connection: IConnection;\n  order: string;\n  parentId: string;\n  properties: IChannelProperties;\n}\n\ninterface IChannelProperties {\n  bannerGfxUrl: string;\n  bannerMode: number;\n  codec: number;\n  codecIsUnencrypted: boolean;\n  codecLatencyFactor: number;\n  codecQuality: number;\n  deleteDelay: number;\n  description: string;\n  flagAreSubscribed: boolean;\n  flagDefault: boolean;\n  flagMaxclientsUnlimited: boolean;\n  flagMaxfamilyclientsInherited: boolean;\n  flagMaxfamilyclientsUnlimited: boolean;\n  flagPassword: boolean;\n  flagPermanent: boolean;\n  flagSemiPermanent: boolean;\n  forcedSilence: boolean;\n  iconId: number;\n  maxclients: number;\n  maxfamilyclients: number;\n  name: string;\n  namePhonetic: string;\n  neededTalkPower: number;\n  order: string;\n  permissionHints: number;\n  storageQuota: number;\n  topic: string;\n  uniqueIdentifier: string;\n}\n```\n\n### IClient\n\n```Typescript\ninterface IClient {\n  id: number;\n  talkStatus: number;\n  channel: IChannel;\n  properties: IClientProperties;\n}\n\ninterface IChannelInfos {\n  rootChannels: IChannel[];\n  subChannels: { [key: number]: IChannel[] };\n}\n\ninterface IClientInfo {\n  channelId: number;\n  id: number;\n  properties: IClientProperties;\n}\n\ninterface IClientProperties {\n  away: boolean;\n  awayMessage: string;\n  badges: string;\n  channelGroupId: string;\n  channelGroupInheritedChannelId: string;\n  country: string;\n  created: number;\n  databaseId: string;\n  defaultChannel: string;\n  defaultChannelPassword: string;\n  defaultToken: string;\n  description: string;\n  flagAvatar: string;\n  flagTalking: boolean;\n  iconId: number;\n  idleTime: number;\n  inputDeactivated: boolean;\n  inputHardware: boolean;\n  inputMuted: boolean;\n  integrations: string;\n  isChannelCommander: boolean;\n  isMuted: boolean;\n  isPrioritySpeaker: boolean;\n  isRecording: boolean;\n  isTalker: boolean;\n  lastConnected: number;\n  metaData: string;\n  monthBytesDownloaded: number;\n  monthBytesUploaded: number;\n  myteamspeakAvatar: string;\n  myteamspeakId: string;\n  neededServerQueryViewPower: number;\n  nickname: string;\n  nicknamePhonetic: string;\n  outputHardware: boolean;\n  outputMuted: boolean;\n  outputOnlyMuted: boolean;\n  permissionHints: number;\n  platform: string;\n  serverGroups: string;\n  serverPassword: string;\n  signedBadges: string;\n  talkPower: number;\n  talkRequest: number;\n  talkRequestMsg: string;\n  totalBytesDownloaded: number;\n  totalBytesUploaded: number;\n  totalConnections: number;\n  type: number;\n  uniqueIdentifier: string;\n  unreadMessages: number;\n  userTag: string;\n  version: string;\n  volumeModificator: number;\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDerTyp7%2Freact-teamspeak-remote-app-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDerTyp7%2Freact-teamspeak-remote-app-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDerTyp7%2Freact-teamspeak-remote-app-api/lists"}