{"id":15021701,"url":"https://github.com/tegraxd/laurentina","last_synced_at":"2026-02-19T14:30:58.390Z","repository":{"id":248174404,"uuid":"821456054","full_name":"TEGRAXD/laurentina","owner":"TEGRAXD","description":"Audio Controller and Queue Wrapper for Shoukaku and Discord.js.","archived":false,"fork":false,"pushed_at":"2025-03-16T23:22:46.000Z","size":2390,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-01T05:58:22.811Z","etag":null,"topics":["audio-controller","discord-bot","discord-js","queue-wrapper","shoukaku"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/laurentina","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TEGRAXD.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2024-06-28T15:22:20.000Z","updated_at":"2025-03-07T08:03:41.000Z","dependencies_parsed_at":"2025-07-31T17:40:01.621Z","dependency_job_id":"7e211334-6656-4e8f-950e-43f3ecb15700","html_url":"https://github.com/TEGRAXD/laurentina","commit_stats":{"total_commits":29,"total_committers":2,"mean_commits":14.5,"dds":"0.13793103448275867","last_synced_commit":"067f2a2b62e9c1783afea4aac0ee021ee4166ae1"},"previous_names":["tegraxd/laurentina"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/TEGRAXD/laurentina","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TEGRAXD%2Flaurentina","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TEGRAXD%2Flaurentina/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TEGRAXD%2Flaurentina/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TEGRAXD%2Flaurentina/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TEGRAXD","download_url":"https://codeload.github.com/TEGRAXD/laurentina/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TEGRAXD%2Flaurentina/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279010943,"owners_count":26084837,"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","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["audio-controller","discord-bot","discord-js","queue-wrapper","shoukaku"],"created_at":"2024-09-24T19:56:55.319Z","updated_at":"2025-10-12T09:42:28.503Z","avatar_url":"https://github.com/TEGRAXD.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laurentina\n\n[![Build](https://img.shields.io/github/actions/workflow/status/TEGRAXD/laurentina/tests.yml)](https://github.com/TEGRAXD/laurentina)\n[![Version](https://img.shields.io/badge/version-1.0.8-blue)](https://www.npmjs.com/package/laurentina)\n[![Github Stars](https://img.shields.io/github/stars/TEGRAXD/Laurentina?style=flat-square)](https://github.com/TEGRAXD/laurentina)\n[![License](https://img.shields.io/github/license/TEGRAXD/laurentina)](https://github.com/TEGRAXD/laurentina?tab=readme-ov-file#license)\n\nLaurentina is Audio Controller and Queue Wrapper for Shoukaku and Discord.js to Manage Music Playback.\n\n![](static/laurentina.png)\n\u003e © Arknights\n\n## Features\n### Audio controller and Queue Wrapper\n- Play\n- Search\n- Add to queue\n- Skip\n- Pause\n- Resume\n- Stop\n- Loop\n- Shuffle\n- Get Queue\n- Clear Queue\n\n## Download\nGet the latest package from [NPM](https://www.npmjs.com/package/laurentina).\n\n## Version\n1.0.8\n\n## Usage\n- Binding Laurentina\n```js\nimport { Client, Message } from \"discord.js\";\nimport { Shoukaku, Connectors } from \"shoukaku\";\nimport { Laurentina } from \"laurentina\";\n\nconst nodes = [\n    {\n        \"name\": \"Node 1\",\n        \"url\": \"localhost:2333\",\n        \"auth\": \"the_unchained\",\n    }\n];\n\nconst client = new Client({\n    intents: [\n        // ...\n    ]\n});\n\nconst shoukaku = new Shoukaku(new Connectors.DiscordJS(client), nodes);\nconst laurentina = new Laurentina(shoukaku, nodes);\n\n// Bind shoukaku and laurentina to client\nclient.shoukaku = shoukaku;\nclient.laurentina = laurentina;\n\nclient.login(\"token\");\n```\n\n- Play a song\n```js\nlet controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) {\n    controller = await client.laurentina.join(\n        \"guildID\",\n        \"voiceChannelID\", // Voice channel where the user connected\n        \"textChannelID\", // Text channel where the command sent\n    ),\n}\n\nconst result = await controller.search(\"scsearch\", \"Gojimaji-P - おちゃめ機能\");\n\nif (!result?.length) return;\n\nconst track = result.shift();\n\nawait controller.play(track);\n```\n\n- Add to Queue (Auto)\n```js\nlet controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) return;\n\nconst result = await controller.search(\"ytsearch\", \"Kobo Kanaeru - Entah\");\n\nif (!result?.length) return;\n\nconst track_one = result.shift();\nconst track_two = result.shift();\n\ncontroller.play(track_one);\n\n// Calling `play` multiple time will automatically add it to queue\ncontroller.play(track_two);\n```\n\n- Add to Queue (Manual)\n```js\nlet controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) return;\n\nconst result = await controller.search(\"ytsearch\", \"Roshidere - Kawaikute gomen\");\n\nif (!result?.length) return;\n\nconst track = result.shift();\n\ncontroller.add(track);\n```\n\n- Skip\n```js\nconst controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) return;\n\nawait controller.skip();\n```\n\n- Pause\n```js\nconst controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) return;\n\ncontroller.pause();\n```\n\n- Resume\n```js\nconst controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) return;\n\ncontroller.resume();\n```\n\n- Stop\n```js\nconst controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) return;\n\ncontroller.stop();\n```\n\n- Loop\n```js\nconst controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) return;\n\nconst loopMode = controller.toggleLoop();\n```\n\n- Shuffle\n```js\nconst controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) return;\n\nconst shuffleMode = controller.toggleShuffle();\n```\n\n- Get Queue\n```js\nconst controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) return;\n\nconst queue = controller.getQueue();\n```\n\n- Clear Queue\n```js\nconst controller = client.laurentina.getController(\"guildID\");\n\nif (!controller) return;\n\ncontroller.clearQueue();\n```\n\n## Contributor\n```\nTEGRAXD - Tegar B. Suganda\n```\n\n## License\n```\nMIT License\n\nCopyright (c) 2024 TEGRAXD\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftegraxd%2Flaurentina","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftegraxd%2Flaurentina","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftegraxd%2Flaurentina/lists"}