1
0
mirror of https://github.com/musix-org/musix-oss synced 2026-04-25 20:23:07 +00:00

493 Commits

Author SHA1 Message Date
github-actions[bot] f65ea4cecc Merge pull request #245 from musix-org/dependabot/npm_and_yarn/v3/firebase-12.3.0
Bump firebase from 12.2.1 to 12.3.0
2025-09-19 23:08:06 +00:00
dependabot[bot] 8c7c2ecf5f Bump firebase from 12.2.1 to 12.3.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 12.2.1 to 12.3.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@12.2.1...firebase@12.3.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 12.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-19 23:07:55 +00:00
github-actions[bot] 3b8ec9a92b Merge pull request #243 from musix-org/dependabot/npm_and_yarn/v3/dotenv-17.2.2
Bump dotenv from 17.2.1 to 17.2.2
2025-09-03 18:39:50 +00:00
dependabot[bot] b183df62ec Bump dotenv from 17.2.1 to 17.2.2
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.2.1 to 17.2.2.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.2.1...v17.2.2)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-03 18:39:41 +00:00
github-actions[bot] b71730dbb7 Merge pull request #242 from musix-org/dependabot/npm_and_yarn/v3/firebase-12.2.1
Bump firebase from 12.2.0 to 12.2.1
2025-08-29 23:07:57 +00:00
dependabot[bot] bea75a09a2 Bump firebase from 12.2.0 to 12.2.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 12.2.0 to 12.2.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@12.2.0...firebase@12.2.1)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 12.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-29 23:07:48 +00:00
github-actions[bot] 417b5947f8 Merge pull request #239 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-13.5.0
Bump firebase-admin from 13.4.0 to 13.5.0
2025-08-28 23:09:38 +00:00
dependabot[bot] c61a8d27f3 Bump firebase-admin from 13.4.0 to 13.5.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 13.4.0 to 13.5.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v13.4.0...v13.5.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-version: 13.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 23:09:30 +00:00
github-actions[bot] d006f7af63 Merge pull request #237 from musix-org/dependabot/npm_and_yarn/v3/firebase-12.2.0
Bump firebase from 12.1.0 to 12.2.0
2025-08-28 23:08:35 +00:00
dependabot[bot] 0880e4672a Bump firebase from 12.1.0 to 12.2.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 12.1.0 to 12.2.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@12.1.0...firebase@12.2.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 12.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-28 23:08:25 +00:00
github-actions[bot] fbbbbff633 Merge pull request #234 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.22.1
Bump discord.js from 14.22.0 to 14.22.1
2025-08-22 23:17:16 +00:00
dependabot[bot] c672204f01 Bump discord.js from 14.22.0 to 14.22.1
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.22.0 to 14.22.1.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/14.22.1/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.22.1/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-version: 14.22.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-22 23:17:02 +00:00
github-actions[bot] 65edcff23d Merge pull request #231 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.22.0
Bump discord.js from 14.21.0 to 14.22.0
2025-08-20 23:34:07 +00:00
dependabot[bot] 3fe7ba99c1 Bump discord.js from 14.21.0 to 14.22.0
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.21.0 to 14.22.0.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/14.22.0/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.22.0/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-version: 14.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-20 23:33:46 +00:00
github-actions[bot] aa855b55c9 Merge pull request #228 from musix-org/dependabot/npm_and_yarn/v3/firebase-12.1.0
Bump firebase from 12.0.0 to 12.1.0
2025-08-07 23:28:18 +00:00
dependabot[bot] 84457d2b61 Bump firebase from 12.0.0 to 12.1.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 12.0.0 to 12.1.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@12.0.0...firebase@12.1.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 12.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-07 23:28:08 +00:00
github-actions[bot] a8d8443486 Merge pull request #225 from musix-org/dependabot/npm_and_yarn/v3/dotenv-17.2.1
Bump dotenv from 17.2.0 to 17.2.1
2025-07-24 23:07:25 +00:00
dependabot[bot] ac64b53463 Bump dotenv from 17.2.0 to 17.2.1
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.2.0 to 17.2.1.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.2.0...v17.2.1)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-24 23:07:17 +00:00
github-actions[bot] 9a37fae278 Merge pull request #224 from musix-org/dependabot/npm_and_yarn/v3/firebase-12.0.0
Bump firebase from 11.10.0 to 12.0.0
2025-07-17 23:44:04 +00:00
dependabot[bot] 89ee0925ef Bump firebase from 11.10.0 to 12.0.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.10.0 to 12.0.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.10.0...firebase@12.0.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 12.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-17 23:43:57 +00:00
github-actions[bot] a44e1113ea Merge pull request #222 from musix-org/dependabot/npm_and_yarn/v3/dotenv-17.2.0
Bump dotenv from 17.1.0 to 17.2.0
2025-07-09 23:57:41 +00:00
dependabot[bot] 8d89ba8256 Bump dotenv from 17.1.0 to 17.2.0
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.1.0 to 17.2.0.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.1.0...v17.2.0)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-09 23:57:31 +00:00
github-actions[bot] 065e7609ec Merge pull request #219 from musix-org/dependabot/npm_and_yarn/v3/dotenv-17.1.0
Bump dotenv from 17.0.1 to 17.1.0
2025-07-08 23:35:59 +00:00
dependabot[bot] 1358807c65 Bump dotenv from 17.0.1 to 17.1.0
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.0.1 to 17.1.0.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.0.1...v17.1.0)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-08 23:35:46 +00:00
github-actions[bot] efe1d40de3 Merge pull request #218 from musix-org/dependabot/npm_and_yarn/v3/dotenv-17.0.1
Bump dotenv from 17.0.0 to 17.0.1
2025-07-01 23:37:50 +00:00
dependabot[bot] 153368cee7 Bump dotenv from 17.0.0 to 17.0.1
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.0.0 to 17.0.1.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.0.0...v17.0.1)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 23:37:40 +00:00
github-actions[bot] 7a4afc536d Merge pull request #215 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.10.0
Bump firebase from 11.9.1 to 11.10.0
2025-07-01 02:25:18 +00:00
dependabot[bot] 3f1a0bf3ec Bump firebase from 11.9.1 to 11.10.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.9.1 to 11.10.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.9.1...firebase@11.10.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 11.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-01 02:25:08 +00:00
github-actions[bot] 917c4772fe Merge pull request #214 from musix-org/dependabot/npm_and_yarn/v3/dotenv-17.0.0
Bump dotenv from 16.6.0 to 17.0.0
2025-06-27 23:51:01 +00:00
dependabot[bot] 63f28cebba Bump dotenv from 16.6.0 to 17.0.0
Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.6.0 to 17.0.0.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v16.6.0...v17.0.0)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-27 23:50:51 +00:00
github-actions[bot] c20a41a346 Merge pull request #212 from musix-org/dependabot/npm_and_yarn/v3/dotenv-16.6.0
Bump dotenv from 16.5.0 to 16.6.0
2025-06-26 23:57:38 +00:00
dependabot[bot] 07a6406d96 Bump dotenv from 16.5.0 to 16.6.0
Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.5.0 to 16.6.0.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v16.5.0...v16.6.0)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 16.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-26 23:57:28 +00:00
github-actions[bot] 966deb2825 Merge pull request #210 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.21.0
Bump discord.js from 14.20.0 to 14.21.0
2025-06-26 00:00:18 +00:00
dependabot[bot] 47a4044f89 Bump discord.js from 14.20.0 to 14.21.0
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.20.0 to 14.21.0.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/14.21.0/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.21.0/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-version: 14.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-26 00:00:10 +00:00
github-actions[bot] a8ed97e60d Merge pull request #205 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.20.0
Bump discord.js from 14.19.3 to 14.20.0
2025-06-17 00:49:38 +00:00
dependabot[bot] 42958972fe Bump discord.js from 14.19.3 to 14.20.0
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.19.3 to 14.20.0.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/14.20.0/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.20.0/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-version: 14.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 00:49:29 +00:00
github-actions[bot] 4b5153be66 Merge pull request #204 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.9.1
Bump firebase from 11.9.0 to 11.9.1
2025-06-10 23:58:08 +00:00
dependabot[bot] 85fab17365 Bump firebase from 11.9.0 to 11.9.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.9.0 to 11.9.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.9.0...firebase@11.9.1)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 11.9.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-10 23:57:59 +00:00
github-actions[bot] 3ae2703196 Merge pull request #202 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.9.0
Bump firebase from 11.8.1 to 11.9.0
2025-06-06 00:02:35 +00:00
dependabot[bot] c603a37018 Bump firebase from 11.8.1 to 11.9.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.8.1 to 11.9.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.8.1...firebase@11.9.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 11.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-06 00:02:25 +00:00
github-actions[bot] 9b8d0aad39 Merge pull request #199 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.8.1
Bump firebase from 11.8.0 to 11.8.1
2025-05-22 23:45:28 +00:00
dependabot[bot] b49be3222f Bump firebase from 11.8.0 to 11.8.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.8.0 to 11.8.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.8.0...firebase@11.8.1)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 11.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-22 23:45:20 +00:00
github-actions[bot] b28f1d8667 Merge pull request #198 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.8.0
Bump firebase from 11.7.3 to 11.8.0
2025-05-20 23:21:38 +00:00
dependabot[bot] 7b2415c590 Bump firebase from 11.7.3 to 11.8.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.7.3 to 11.8.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.7.3...firebase@11.8.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 11.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-20 23:21:26 +00:00
github-actions[bot] 8cb4a8ed63 Merge pull request #195 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.7.3
Bump firebase from 11.7.1 to 11.7.3
2025-05-15 00:04:13 +00:00
dependabot[bot] 5678e3237a Bump firebase from 11.7.1 to 11.7.3
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.7.1 to 11.7.3.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.7.1...firebase@11.7.3)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 11.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 00:04:04 +00:00
github-actions[bot] dbd8c85232 Merge pull request #194 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-13.4.0
Bump firebase-admin from 13.3.0 to 13.4.0
2025-05-12 23:38:10 +00:00
dependabot[bot] ff03b4ede8 Bump firebase-admin from 13.3.0 to 13.4.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 13.3.0 to 13.4.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v13.3.0...v13.4.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-version: 13.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 23:38:01 +00:00
github-actions[bot] 9cbeeed88c Merge pull request #192 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.7.1
Bump firebase from 11.6.1 to 11.7.1
2025-05-08 00:09:16 +00:00
dependabot[bot] a3e1a5c8ea Bump firebase from 11.6.1 to 11.7.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.6.1 to 11.7.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.6.1...firebase@11.7.1)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 11.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 00:09:08 +00:00
github-actions[bot] 696b966632 Merge pull request #188 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.19.3
Bump discord.js from 14.19.2 to 14.19.3
2025-05-02 23:20:32 +00:00
dependabot[bot] 363fb09d87 Bump discord.js from 14.19.2 to 14.19.3
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.19.2 to 14.19.3.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/14.19.3/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.19.3/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-version: 14.19.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-02 23:20:22 +00:00
github-actions[bot] 3381858d06 Merge pull request #185 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.19.2
Bump discord.js from 14.18.0 to 14.19.2
2025-04-29 00:31:03 +00:00
dependabot[bot] aa2230f766 Bump discord.js from 14.18.0 to 14.19.2
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.18.0 to 14.19.2.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/14.19.2/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.19.2/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-version: 14.19.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-29 00:30:54 +00:00
github-actions[bot] 2f7f766219 Merge pull request #182 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.6.1
Bump firebase from 11.6.0 to 11.6.1
2025-04-24 23:30:31 +00:00
dependabot[bot] c29e8e37a6 Bump firebase from 11.6.0 to 11.6.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.6.0 to 11.6.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.6.0...firebase@11.6.1)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 11.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-24 23:30:21 +00:00
github-actions[bot] b475005add Merge pull request #181 from musix-org/dependabot/npm_and_yarn/v3/nodemon-3.1.10
Bump nodemon from 3.1.9 to 3.1.10
2025-04-23 23:54:33 +00:00
dependabot[bot] 56f1be565d Bump nodemon from 3.1.9 to 3.1.10
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.9 to 3.1.10.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.9...v3.1.10)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-version: 3.1.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-23 23:54:24 +00:00
github-actions[bot] 175236bbc3 Merge pull request #177 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-13.3.0
Bump firebase-admin from 13.2.0 to 13.3.0
2025-04-22 23:14:14 +00:00
dependabot[bot] 10734053fd Bump firebase-admin from 13.2.0 to 13.3.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 13.2.0 to 13.3.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v13.2.0...v13.3.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-version: 13.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 23:14:04 +00:00
github-actions[bot] 2001bb0711 Merge pull request #176 from musix-org/dependabot/npm_and_yarn/v3/dotenv-16.5.0
Bump dotenv from 16.4.7 to 16.5.0
2025-04-10 23:50:30 +00:00
dependabot[bot] 2f313d24c5 Bump dotenv from 16.4.7 to 16.5.0
Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.4.7 to 16.5.0.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v16.4.7...v16.5.0)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 16.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-10 23:50:21 +00:00
github-actions[bot] 612f3be67a Merge pull request #174 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.6.0
Bump firebase from 11.5.0 to 11.6.0
2025-04-01 00:41:34 +00:00
dependabot[bot] 5f7862cc36 Bump firebase from 11.5.0 to 11.6.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.5.0 to 11.6.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.5.0...firebase@11.6.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-version: 11.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-01 00:41:24 +00:00
github-actions[bot] 6946800be2 Merge pull request #172 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.5.0
Bump firebase from 11.4.0 to 11.5.0
2025-03-20 23:48:05 +00:00
dependabot[bot] af18abb6d2 Bump firebase from 11.4.0 to 11.5.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.4.0 to 11.5.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.4.0...firebase@11.5.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-20 23:47:57 +00:00
github-actions[bot] 0256b00db1 Merge pull request #169 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-13.2.0
Bump firebase-admin from 13.1.0 to 13.2.0
2025-03-05 23:10:12 +00:00
dependabot[bot] 1f2c56c79f Bump firebase-admin from 13.1.0 to 13.2.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 13.1.0 to 13.2.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v13.1.0...v13.2.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 23:09:57 +00:00
github-actions[bot] e63141753b Merge pull request #167 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.4.0
Bump firebase from 11.3.1 to 11.4.0
2025-02-27 23:40:06 +00:00
dependabot[bot] 607eeda4c6 Bump firebase from 11.3.1 to 11.4.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.3.1 to 11.4.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.3.1...firebase@11.4.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-27 23:39:57 +00:00
github-actions[bot] 4c2c6bc7d5 Merge pull request #164 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.3.1
Bump firebase from 11.3.0 to 11.3.1
2025-02-11 23:21:30 +00:00
dependabot[bot] bbdc023a6a Bump firebase from 11.3.0 to 11.3.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.3.0 to 11.3.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.3.0...firebase@11.3.1)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 23:21:18 +00:00
github-actions[bot] 7b8d68e418 Merge pull request #163 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.18.0
Bump discord.js from 14.17.3 to 14.18.0
2025-02-10 23:54:50 +00:00
dependabot[bot] 2e5c03ceb5 Bump discord.js from 14.17.3 to 14.18.0
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.17.3 to 14.18.0.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/14.18.0/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.18.0/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 23:54:39 +00:00
github-actions[bot] b9c9b1b4ba Merge pull request #159 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-13.1.0
Bump firebase-admin from 13.0.2 to 13.1.0
2025-02-06 23:19:59 +00:00
dependabot[bot] 1b4df8a28f Bump firebase-admin from 13.0.2 to 13.1.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 13.0.2 to 13.1.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v13.0.2...v13.1.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-06 23:19:49 +00:00
github-actions[bot] 465fb3dadb Merge pull request #158 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.3.0
Bump firebase from 11.2.0 to 11.3.0
2025-02-06 23:18:43 +00:00
dependabot[bot] 31d2ceb0cc Bump firebase from 11.2.0 to 11.3.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.2.0 to 11.3.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.2.0...firebase@11.3.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-06 23:18:31 +00:00
github-actions[bot] 3fc7d026b7 Merge pull request #155 from musix-org/dependabot/npm_and_yarn/v3/discordjs/opus-0.10.0
Bump @discordjs/opus from 0.9.0 to 0.10.0
2025-01-28 00:02:20 +00:00
dependabot[bot] 7fb09ec179 Bump @discordjs/opus from 0.9.0 to 0.10.0
Bumps [@discordjs/opus](https://github.com/discordjs/opus) from 0.9.0 to 0.10.0.
- [Release notes](https://github.com/discordjs/opus/releases)
- [Commits](https://github.com/discordjs/opus/compare/v0.9.0...v0.10.0)

---
updated-dependencies:
- dependency-name: "@discordjs/opus"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-28 00:02:06 +00:00
github-actions[bot] 0f94bc3ff1 Merge pull request #153 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.2.0
Bump firebase from 11.1.0 to 11.2.0
2025-01-16 23:15:11 +00:00
dependabot[bot] 71ea1a5f0e Bump firebase from 11.1.0 to 11.2.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.1.0 to 11.2.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.1.0...firebase@11.2.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-16 23:14:50 +00:00
github-actions[bot] 80408f7474 Merge pull request #152 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.17.3
Bump discord.js from 14.17.2 to 14.17.3
2025-01-09 00:00:44 +00:00
dependabot[bot] 1219cffa92 Bump discord.js from 14.17.2 to 14.17.3
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.17.2 to 14.17.3.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/14.17.3/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.17.3/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-09 00:00:31 +00:00
github-actions[bot] 0124d4bdf0 Merge pull request #148 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.17.2
Bump discord.js from 14.17.0 to 14.17.2
2025-01-02 23:45:05 +00:00
dependabot[bot] 1adea500f1 Bump discord.js from 14.17.0 to 14.17.2
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.17.0 to 14.17.2.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/14.17.2/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.17.2/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-02 23:44:54 +00:00
github-actions[bot] 9cd45ca5a9 Merge pull request #146 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.17.0
Bump discord.js from 14.16.3 to 14.17.0
2025-01-01 23:50:04 +00:00
dependabot[bot] 0c6e260735 Bump discord.js from 14.16.3 to 14.17.0
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.16.3 to 14.17.0.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/14.17.0/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.17.0/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-01 23:49:53 +00:00
github-actions[bot] 45aa628fa9 Merge pull request #142 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-13.0.2
Bump firebase-admin from 13.0.1 to 13.0.2
2024-12-19 23:39:07 +00:00
dependabot[bot] a2e98af3db Bump firebase-admin from 13.0.1 to 13.0.2
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 13.0.1 to 13.0.2.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v13.0.1...v13.0.2)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-19 23:38:55 +00:00
github-actions[bot] 0c07c0652d Merge pull request #141 from musix-org/dependabot/npm_and_yarn/v3/nodemon-3.1.9
Bump nodemon from 3.1.7 to 3.1.9
2024-12-14 00:05:22 +00:00
dependabot[bot] a29e66279f Bump nodemon from 3.1.7 to 3.1.9
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.7 to 3.1.9.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.7...v3.1.9)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-14 00:05:10 +00:00
github-actions[bot] ec784664f2 Merge pull request #138 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.1.0
Bump firebase from 11.0.2 to 11.1.0
2024-12-12 23:10:04 +00:00
dependabot[bot] cef96389de Bump firebase from 11.0.2 to 11.1.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.0.2 to 11.1.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.0.2...firebase@11.1.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-12 23:09:48 +00:00
github-actions[bot] 507b241a6c Merge pull request #136 from musix-org/dependabot/npm_and_yarn/v3/dotenv-16.4.7
Bump dotenv from 16.4.5 to 16.4.7
2024-12-04 00:01:55 +00:00
dependabot[bot] cd68daa256 Bump dotenv from 16.4.5 to 16.4.7
Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.4.5 to 16.4.7.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v16.4.5...v16.4.7)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-04 00:01:38 +00:00
github-actions[bot] d3d184e6f0 Merge pull request #132 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-13.0.1
Bump firebase-admin from 13.0.0 to 13.0.1
2024-11-20 23:30:18 +00:00
dependabot[bot] 8a9d3479e7 Bump firebase-admin from 13.0.0 to 13.0.1
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 13.0.0 to 13.0.1.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v13.0.0...v13.0.1)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-20 23:30:03 +00:00
github-actions[bot] 7b53a81198 Merge pull request #127 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.0.2
Bump firebase from 11.0.1 to 11.0.2
2024-11-14 23:08:34 +00:00
dependabot[bot] 02827e1eee Bump firebase from 11.0.1 to 11.0.2
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.0.1 to 11.0.2.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.0.1...firebase@11.0.2)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-14 23:08:20 +00:00
github-actions[bot] 89d63a9df8 Merge pull request #126 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-13.0.0
Bump firebase-admin from 12.7.0 to 13.0.0
2024-11-12 23:49:07 +00:00
dependabot[bot] 491f55ca10 Bump firebase-admin from 12.7.0 to 13.0.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 12.7.0 to 13.0.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v12.7.0...v13.0.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-12 23:48:55 +00:00
github-actions[bot] dee00dd848 Merge pull request #124 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-12.7.0
Bump firebase-admin from 12.6.0 to 12.7.0
2024-10-24 23:56:46 +00:00
dependabot[bot] 01ed17a3b8 Bump firebase-admin from 12.6.0 to 12.7.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 12.6.0 to 12.7.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v12.6.0...v12.7.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-24 23:56:35 +00:00
github-actions[bot] daab6ec986 Merge pull request #121 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.0.1
Bump firebase from 11.0.0 to 11.0.1
2024-10-22 23:16:40 +00:00
dependabot[bot] 6c4713ca89 Bump firebase from 11.0.0 to 11.0.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 11.0.0 to 11.0.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@11.0.0...firebase@11.0.1)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-22 23:16:27 +00:00
github-actions[bot] eeb288628e Merge pull request #119 from musix-org/dependabot/npm_and_yarn/v3/firebase-11.0.0
Bump firebase from 10.14.1 to 11.0.0
2024-10-21 23:42:55 +00:00
dependabot[bot] 5eed4552cd Bump firebase from 10.14.1 to 11.0.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.14.1 to 11.0.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.14.1...firebase@11.0.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 23:42:44 +00:00
github-actions[bot] 680743486f Merge pull request #118 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.14.1
Bump firebase from 10.14.0 to 10.14.1
2024-10-10 23:13:46 +00:00
dependabot[bot] 1584e1f276 Bump firebase from 10.14.0 to 10.14.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.14.0 to 10.14.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.14.0...firebase@10.14.1)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-10 23:13:33 +00:00
github-actions[bot] 681a8acde9 Merge pull request #116 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-12.6.0
Bump firebase-admin from 12.5.0 to 12.6.0
2024-09-30 23:44:50 +00:00
dependabot[bot] 46fd7a3c54 Bump firebase-admin from 12.5.0 to 12.6.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 12.5.0 to 12.6.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v12.5.0...v12.6.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 23:44:37 +00:00
github-actions[bot] a6f6e4ffea Merge pull request #115 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.14.0
Bump firebase from 10.13.2 to 10.14.0
2024-09-30 23:43:32 +00:00
dependabot[bot] a9f38244d3 Bump firebase from 10.13.2 to 10.14.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.13.2 to 10.14.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.13.2...firebase@10.14.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 23:43:21 +00:00
github-actions[bot] 60bf4fb416 Merge pull request #114 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.16.3
Bump discord.js from 14.16.2 to 14.16.3
2024-09-30 23:43:16 +00:00
dependabot[bot] 28c4040141 Bump discord.js from 14.16.2 to 14.16.3
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.16.2 to 14.16.3.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/main/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.16.3/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 23:43:06 +00:00
github-actions[bot] 9f6d53b07f Merge pull request #107 from musix-org/dependabot/npm_and_yarn/v3/nodemon-3.1.7
Bump nodemon from 3.1.6 to 3.1.7
2024-09-20 23:13:53 +00:00
dependabot[bot] 4c75e442de Bump nodemon from 3.1.6 to 3.1.7
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.6 to 3.1.7.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.6...v3.1.7)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-20 23:13:41 +00:00
github-actions[bot] 7108573cd9 Merge pull request #105 from musix-org/dependabot/npm_and_yarn/v3/nodemon-3.1.6
Bump nodemon from 3.1.5 to 3.1.6
2024-09-19 23:22:28 +00:00
dependabot[bot] b9766c9973 Bump nodemon from 3.1.5 to 3.1.6
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.5 to 3.1.6.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.5...v3.1.6)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-19 23:22:16 +00:00
github-actions[bot] 9d3e974932 Merge pull request #103 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.13.2
Bump firebase from 10.13.1 to 10.13.2
2024-09-18 23:40:23 +00:00
dependabot[bot] 693bc70b10 Bump firebase from 10.13.1 to 10.13.2
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.13.1 to 10.13.2.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.13.1...firebase@10.13.2)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-18 23:40:11 +00:00
github-actions[bot] ea7e4f104a Merge pull request #100 from musix-org/dependabot/npm_and_yarn/v3/nodemon-3.1.5
Bump nodemon from 3.1.4 to 3.1.5
2024-09-17 23:42:17 +00:00
dependabot[bot] 8e0555fa45 Bump nodemon from 3.1.4 to 3.1.5
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.4...v3.1.5)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-17 23:42:04 +00:00
github-actions[bot] 9cc898fb7e Merge pull request #95 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-12.5.0
Bump firebase-admin from 12.4.0 to 12.5.0
2024-09-12 23:15:10 +00:00
github-actions[bot] 10f27c24da Merge pull request #94 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.16.2
Bump discord.js from 14.16.1 to 14.16.2
2024-09-12 23:15:01 +00:00
dependabot[bot] 49e71bcda0 Bump firebase-admin from 12.4.0 to 12.5.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 12.4.0 to 12.5.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Changelog](https://github.com/firebase/firebase-admin-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v12.4.0...v12.5.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-12 23:14:59 +00:00
dependabot[bot] 8becd2b84c Bump discord.js from 14.16.1 to 14.16.2
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.16.1 to 14.16.2.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/main/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.16.2/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-12 23:14:51 +00:00
github-actions[bot] 9517123b9d Merge pull request #91 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.16.1
Bump discord.js from 14.15.3 to 14.16.1
2024-09-02 23:28:42 +00:00
dependabot[bot] fb902fb823 Bump discord.js from 14.15.3 to 14.16.1
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.15.3 to 14.16.1.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/main/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.16.1/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 23:28:30 +00:00
github-actions[bot] 7ab251d160 Merge pull request #90 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.13.1
Bump firebase from 10.13.0 to 10.13.1
2024-08-30 00:03:23 +00:00
dependabot[bot] 50c58fe669 Bump firebase from 10.13.0 to 10.13.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.13.0 to 10.13.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.13.0...firebase@10.13.1)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 00:03:12 +00:00
github-actions[bot] 8a64c5ab62 Merge pull request #87 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-12.4.0
Bump firebase-admin from 12.3.1 to 12.4.0
2024-08-22 23:36:18 +00:00
dependabot[bot] eb0bef857d Bump firebase-admin from 12.3.1 to 12.4.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 12.3.1 to 12.4.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v12.3.1...v12.4.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 23:36:06 +00:00
github-actions[bot] 61e968315c Merge pull request #86 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.13.0
Bump firebase from 10.12.5 to 10.13.0
2024-08-15 23:36:28 +00:00
dependabot[bot] de19e0b598 Bump firebase from 10.12.5 to 10.13.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.12.5 to 10.13.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.12.5...firebase@10.13.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-15 23:36:14 +00:00
github-actions[bot] fececf9a76 Merge pull request #84 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-12.3.1
Bump firebase-admin from 12.3.0 to 12.3.1
2024-08-08 23:40:57 +00:00
dependabot[bot] 57d6d30758 Bump firebase-admin from 12.3.0 to 12.3.1
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 12.3.0 to 12.3.1.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v12.3.0...v12.3.1)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-08 23:40:44 +00:00
github-actions[bot] b1850d5b56 Merge pull request #81 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.12.5
Bump firebase from 10.12.4 to 10.12.5
2024-08-01 23:25:27 +00:00
dependabot[bot] 0e77e1315c Bump firebase from 10.12.4 to 10.12.5
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.12.4 to 10.12.5.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/main/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.12.4...firebase@10.12.5)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-01 23:25:15 +00:00
github-actions[bot] 9a0ea86b33 Merge pull request #80 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-12.3.0
Bump firebase-admin from 12.2.0 to 12.3.0
2024-07-26 00:04:20 +00:00
dependabot[bot] 5cd8ad1d06 Bump firebase-admin from 12.2.0 to 12.3.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 12.2.0 to 12.3.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v12.2.0...v12.3.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-26 00:04:10 +00:00
github-actions[bot] 17fba86f20 Merge pull request #77 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.12.4
Bump firebase from 10.12.3 to 10.12.4
2024-07-19 13:29:41 +00:00
dependabot[bot] 42da194bba Bump firebase from 10.12.3 to 10.12.4
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.12.3 to 10.12.4.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.12.3...firebase@10.12.4)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-19 13:29:29 +00:00
github-actions[bot] c0eec469a0 Merge pull request #75 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.12.3
Bump firebase from 10.12.2 to 10.12.3
2024-07-03 23:10:58 +00:00
dependabot[bot] e76a5ab1ce Bump firebase from 10.12.2 to 10.12.3
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.12.2 to 10.12.3.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.12.2...firebase@10.12.3)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-03 23:10:45 +00:00
github-actions[bot] 49a2a8b7f3 Merge pull request #71 from musix-org/dependabot/npm_and_yarn/v3/nodemon-3.1.4
Bump nodemon from 3.1.3 to 3.1.4
2024-06-20 23:41:05 +00:00
github-actions[bot] 019cab9157 Merge pull request #70 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-12.2.0
Bump firebase-admin from 12.1.1 to 12.2.0
2024-06-20 23:40:55 +00:00
dependabot[bot] 4a34ab505e Bump nodemon from 3.1.3 to 3.1.4
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.3...v3.1.4)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-20 23:40:52 +00:00
dependabot[bot] 82fd5dc11d Bump firebase-admin from 12.1.1 to 12.2.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 12.1.1 to 12.2.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v12.1.1...v12.2.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-20 23:40:44 +00:00
github-actions[bot] 6a6af9e5f7 Merge pull request #67 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.15.3
Bump discord.js from 14.15.2 to 14.15.3
2024-06-03 23:27:27 +00:00
dependabot[bot] 8f0c412e4f Bump discord.js from 14.15.2 to 14.15.3
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.15.2 to 14.15.3.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/main/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.15.3/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 23:27:15 +00:00
github-actions[bot] f1e6bd2b70 Merge pull request #66 from musix-org/dependabot/npm_and_yarn/v3/nodemon-3.1.3
Bump nodemon from 3.1.2 to 3.1.3
2024-06-03 23:27:12 +00:00
dependabot[bot] a525e5df5f Bump nodemon from 3.1.2 to 3.1.3
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.2...v3.1.3)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 23:27:01 +00:00
github-actions[bot] 5882cf8379 Merge pull request #62 from musix-org/dependabot/npm_and_yarn/v3/nodemon-3.1.2
Bump nodemon from 3.1.1 to 3.1.2
2024-05-29 23:53:55 +00:00
dependabot[bot] 287f4f7d7d Bump nodemon from 3.1.1 to 3.1.2
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.1...v3.1.2)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-29 23:53:41 +00:00
github-actions[bot] 572fe33732 Merge pull request #57 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.12.2
Bump firebase from 10.12.1 to 10.12.2
2024-05-27 23:10:05 +00:00
dependabot[bot] 864bf0e797 Bump firebase from 10.12.1 to 10.12.2
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.12.1 to 10.12.2.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.12.1...firebase@10.12.2)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-27 23:09:54 +00:00
github-actions[bot] b7b3b02af5 Merge pull request #56 from musix-org/dependabot/npm_and_yarn/v3/nodemon-3.1.1
Bump nodemon from 3.1.0 to 3.1.1
2024-05-27 23:09:48 +00:00
dependabot[bot] a2cc0236e8 Bump nodemon from 3.1.0 to 3.1.1
Bumps [nodemon](https://github.com/remy/nodemon) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-27 23:09:37 +00:00
github-actions[bot] 3b19e113e6 Merge pull request #47 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.15.2
Bump discord.js from 14.14.1 to 14.15.2
2024-05-22 23:39:39 +00:00
dependabot[bot] c6781a56f5 Bump discord.js from 14.14.1 to 14.15.2
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 14.14.1 to 14.15.2.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/main/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.15.2/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-22 23:39:28 +00:00
Christer Warén 1af753f828 Merge branch 'master' into v3 2024-05-23 02:36:16 +03:00
Christer Warén 72e8e06ce4 Merge pull request #53 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.12.1
Bump firebase from 10.11.0 to 10.12.1
2024-05-23 02:29:58 +03:00
dependabot[bot] c9f81b4135 ---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-22 23:29:06 +00:00
Christer Warén 3868c10a8d Merge pull request #55 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-12.1.1
Bump firebase-admin from 12.1.0 to 12.1.1
2024-05-23 02:28:12 +03:00
dependabot[bot] 742b83efef ---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-21 23:28:35 +00:00
Christer Warén 68ff1a39f8 Merge pull request #40 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.11.0
Bump firebase from 10.10.0 to 10.11.0
2024-04-24 12:57:13 +03:00
dependabot[bot] 64f38e6c46 Bump firebase from 10.10.0 to 10.11.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.10.0 to 10.11.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.10.0...firebase@10.11.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-24 09:57:00 +00:00
Christer Warén 173d00686d Merge pull request #42 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-12.1.0
Bump firebase-admin from 12.0.0 to 12.1.0
2024-04-24 12:56:15 +03:00
dependabot[bot] a15c36ae12 Bump firebase-admin from 12.0.0 to 12.1.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 12.0.0 to 12.1.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v12.0.0...v12.1.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-16 23:57:56 +00:00
Christer Warén 430acf74ac Merge pull request #37 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.10.0
Bump firebase from 10.9.0 to 10.10.0
2024-03-31 00:02:08 +02:00
dependabot[bot] e2592da8ee Bump firebase from 10.9.0 to 10.10.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.9.0 to 10.10.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.9.0...firebase@10.10.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 23:16:13 +00:00
Christer Warén 39fd7b6dbc Merge pull request #36 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.9.0
Bump firebase from 10.8.1 to 10.9.0
2024-03-15 16:30:49 +02:00
dependabot[bot] 1bb46c3368 Bump firebase from 10.8.1 to 10.9.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.8.1 to 10.9.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.8.1...firebase@10.9.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-14 23:14:04 +00:00
Christer Warén 3442f2ecaa Merge pull request #34 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.8.1
Bump firebase from 10.8.0 to 10.8.1
2024-02-29 04:13:27 +02:00
dependabot[bot] faa85ceb24 Bump firebase from 10.8.0 to 10.8.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 10.8.0 to 10.8.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@10.8.0...firebase@10.8.1)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-28 23:27:40 +00:00
Christer Warén 7dc689ea6b Merge pull request #30 from musix-org/dependabot/npm_and_yarn/v3/nodemon-3.1.0
Bump nodemon from 3.0.3 to 3.1.0
2024-02-24 19:01:25 +02:00
dependabot[bot] 01d7a25eeb Bump nodemon from 3.0.3 to 3.1.0
Bumps [nodemon](https://github.com/remy/nodemon) from 3.0.3 to 3.1.0.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.0.3...v3.1.0)

---
updated-dependencies:
- dependency-name: nodemon
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-23 00:14:48 +00:00
Christer Warén 0dd9a7bb44 Merge pull request #27 from musix-org/dependabot/npm_and_yarn/v3/dotenv-16.4.5
Bump dotenv from 16.4.4 to 16.4.5
2024-02-21 20:52:35 +02:00
dependabot[bot] 0eb12d490e Bump dotenv from 16.4.4 to 16.4.5
Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.4.4 to 16.4.5.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v16.4.4...v16.4.5)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-20 23:30:14 +00:00
Christer Warén 7e66d12da5 Merge pull request #25 from musix-org/dependabot/npm_and_yarn/v3/dotenv-16.4.4
Bump dotenv from 16.4.1 to 16.4.4
2024-02-14 15:19:49 +02:00
dependabot[bot] ae5f1cd0a3 Bump dotenv from 16.4.1 to 16.4.4
Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.4.1 to 16.4.4.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v16.4.1...v16.4.4)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-13 23:20:27 +00:00
Christer Warén 86b4676159 Fix code to work on this decade 1/x 2024-02-10 09:33:59 +02:00
Christer Warén 99ecd9787d Merge branch 'master' into v3 2024-02-09 08:00:19 +02:00
Christer Warén fc49f10a91 Merge pull request #18 from musix-org/dependabot/npm_and_yarn/v3/ytdl-core-4.11.5
Bump ytdl-core from 3.4.2 to 4.11.5
2024-02-09 07:30:00 +02:00
dependabot[bot] cbe2f02169 Bump ytdl-core from 3.4.2 to 4.11.5
Bumps [ytdl-core](https://github.com/fent/node-ytdl-core) from 3.4.2 to 4.11.5.
- [Release notes](https://github.com/fent/node-ytdl-core/releases)
- [Commits](https://github.com/fent/node-ytdl-core/compare/v3.4.2...v4.11.5)

---
updated-dependencies:
- dependency-name: ytdl-core
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-09 05:29:16 +00:00
Christer Warén ba162e52e0 Merge pull request #19 from musix-org/dependabot/npm_and_yarn/v3/firebase-admin-12.0.0
Bump firebase-admin from 8.13.0 to 12.0.0
2024-02-09 07:28:14 +02:00
Christer Warén 11c4bbc7e9 Merge pull request #17 from musix-org/dependabot/npm_and_yarn/v3/dotenv-16.4.1
Bump dotenv from 8.6.0 to 16.4.1
2024-02-09 07:28:05 +02:00
Christer Warén efe32a5093 Merge pull request #16 from musix-org/dependabot/npm_and_yarn/v3/ytsr-3.8.4
Bump ytsr from 0.1.21 to 3.8.4
2024-02-09 07:27:57 +02:00
Christer Warén f48203a981 Merge pull request #15 from musix-org/dependabot/npm_and_yarn/v3/utf-8-validate-6.0.3
Bump utf-8-validate from 5.0.10 to 6.0.3
2024-02-09 07:27:49 +02:00
dependabot[bot] d0fb158d73 Bump firebase-admin from 8.13.0 to 12.0.0
Bumps [firebase-admin](https://github.com/firebase/firebase-admin-node) from 8.13.0 to 12.0.0.
- [Release notes](https://github.com/firebase/firebase-admin-node/releases)
- [Commits](https://github.com/firebase/firebase-admin-node/compare/v8.13.0...v12.0.0)

---
updated-dependencies:
- dependency-name: firebase-admin
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 23:48:27 +00:00
dependabot[bot] 5d755e4166 Bump dotenv from 8.6.0 to 16.4.1
Bumps [dotenv](https://github.com/motdotla/dotenv) from 8.6.0 to 16.4.1.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v8.6.0...v16.4.1)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 23:47:36 +00:00
dependabot[bot] 95e3229461 Bump ytsr from 0.1.21 to 3.8.4
Bumps [ytsr](https://github.com/TimeForANinja/node-ytsr) from 0.1.21 to 3.8.4.
- [Release notes](https://github.com/TimeForANinja/node-ytsr/releases)
- [Commits](https://github.com/TimeForANinja/node-ytsr/commits/v3.8.4)

---
updated-dependencies:
- dependency-name: ytsr
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 23:47:25 +00:00
dependabot[bot] b01c7ff2f2 Bump utf-8-validate from 5.0.10 to 6.0.3
Bumps [utf-8-validate](https://github.com/websockets/utf-8-validate) from 5.0.10 to 6.0.3.
- [Release notes](https://github.com/websockets/utf-8-validate/releases)
- [Commits](https://github.com/websockets/utf-8-validate/compare/v5.0.10...v6.0.3)

---
updated-dependencies:
- dependency-name: utf-8-validate
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 23:47:15 +00:00
Christer Warén 59bc29bb3e Merge branch 'master' into v3 2024-02-09 00:09:51 +02:00
Christer Warén 66acf7dbeb Merge branch 'master' into v3 2024-02-09 00:06:56 +02:00
Christer Warén 5895dd8d20 Merge pull request #6 from musix-org/dependabot/npm_and_yarn/v3/discord.js-14.14.1
Bump discord.js from 12.5.3 to 14.14.1
2024-02-09 00:02:39 +02:00
Christer Warén cc0a0c7826 Merge pull request #12 from musix-org/dependabot/npm_and_yarn/v3/discordjs/opus-0.9.0
Bump @discordjs/opus from 0.2.1 to 0.9.0
2024-02-09 00:01:28 +02:00
Christer Warén 8fe21fef45 Merge pull request #10 from musix-org/dependabot/npm_and_yarn/v3/firebase-10.8.0
Bump firebase from 7.24.0 to 10.8.0
2024-02-09 00:00:50 +02:00
dependabot[bot] 7b27566ed3 Bump firebase from 7.24.0 to 10.8.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.24.0 to 10.8.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.24.0...firebase@10.8.0)

---
updated-dependencies:
- dependency-name: firebase
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 21:59:23 +00:00
Christer Warén a1d70aa9f7 Merge pull request #8 from musix-org/dependabot/npm_and_yarn/v3/genius-lyrics-api-3.2.0
Bump genius-lyrics-api from 2.0.3 to 3.2.0
2024-02-08 23:58:22 +02:00
Christer Warén 50838feb53 Merge pull request #13 from musix-org/dependabot/npm_and_yarn/v3/spotify-web-api-node-5.0.2
Bump spotify-web-api-node from 4.0.0 to 5.0.2
2024-02-08 23:57:38 +02:00
dependabot[bot] f2534e02af Bump spotify-web-api-node from 4.0.0 to 5.0.2
Bumps [spotify-web-api-node](https://github.com/thelinmichael/spotify-web-api-node) from 4.0.0 to 5.0.2.
- [Release notes](https://github.com/thelinmichael/spotify-web-api-node/releases)
- [Changelog](https://github.com/thelinmichael/spotify-web-api-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/thelinmichael/spotify-web-api-node/compare/v4.0.0...v5.0.2)

---
updated-dependencies:
- dependency-name: spotify-web-api-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 21:53:40 +00:00
dependabot[bot] 142671a8ff Bump @discordjs/opus from 0.2.1 to 0.9.0
Bumps [@discordjs/opus](https://github.com/discordjs/opus) from 0.2.1 to 0.9.0.
- [Release notes](https://github.com/discordjs/opus/releases)
- [Commits](https://github.com/discordjs/opus/compare/v0.2.1...v0.9.0)

---
updated-dependencies:
- dependency-name: "@discordjs/opus"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 21:53:31 +00:00
dependabot[bot] aa1828d221 Bump genius-lyrics-api from 2.0.3 to 3.2.0
Bumps [genius-lyrics-api](https://github.com/farshed/genius-lyrics-api) from 2.0.3 to 3.2.0.
- [Release notes](https://github.com/farshed/genius-lyrics-api/releases)
- [Commits](https://github.com/farshed/genius-lyrics-api/compare/v2.0.3...v3.2.0)

---
updated-dependencies:
- dependency-name: genius-lyrics-api
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 21:52:40 +00:00
dependabot[bot] c64399e658 Bump discord.js from 12.5.3 to 14.14.1
Bumps [discord.js](https://github.com/discordjs/discord.js/tree/HEAD/packages/discord.js) from 12.5.3 to 14.14.1.
- [Release notes](https://github.com/discordjs/discord.js/releases)
- [Changelog](https://github.com/discordjs/discord.js/blob/main/packages/discord.js/CHANGELOG.md)
- [Commits](https://github.com/discordjs/discord.js/commits/14.14.1/packages/discord.js)

---
updated-dependencies:
- dependency-name: discord.js
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-08 21:52:23 +00:00
Christer Warén 4789fbfaf7 Merge branch 'master' into v3 2024-02-08 23:28:33 +02:00
Christer Warén 5ac1cd4664 Merge remote-tracking branch 'musix-v3/master' into v3 2024-02-08 17:42:23 +02:00
Musix f616100474 Update seek.js 2020-07-30 10:43:36 +03:00
MatteZ02 4e8cf50972 Update package.json 2020-07-29 21:58:35 +03:00
MatteZ02 79f32a80e5 Patch 3.10.2 2020-07-29 21:56:10 +03:00
Matte 388597412a Update msg.js 2020-07-29 20:50:54 +03:00
Matte e62bec318a Update reset.js 2020-07-29 19:45:37 +03:00
Matte 94f6a99470 Update getSpotifyKey.js 2020-07-22 12:17:01 +03:00
MatteZ02 1d4750aa46 Update play.js 2020-07-19 23:38:50 +03:00
MatteZ02 208b535da0 Update seek.js 2020-07-19 14:37:25 +03:00
MatteZ02 4e271b107e Merge branch 'master' of https://github.com/MatteZ02/Musix-V3 2020-07-19 14:16:07 +03:00
MatteZ02 75be67a18b Chore update 3.10.1 2020-07-19 14:16:04 +03:00
Matte d227d94c95 Create README.md 2020-07-19 13:35:55 +03:00
MatteZ02 ef195e4377 Chore update 3.10.0 2020-07-18 22:33:09 +03:00
MatteZ02 1ce6c40a9b Update getSpotifyKey.js 2020-07-12 20:24:36 +03:00
MatteZ02 883844a172 fixed smth 2020-07-12 19:22:29 +03:00
MatteZ02 bfcc3803b5 Update client.js 2020-07-12 19:19:09 +03:00
MatteZ02 2686829e80 patched error with keys (temporary) 2020-07-12 19:16:54 +03:00
MatteZ02 163b6ce836 Chore update 3.9 2020-07-12 19:08:53 +03:00
MatteZ02 086c51f367 Update restart.js 2020-07-10 16:33:45 +03:00
Matte 6b8d65c4cb Update package.json 2020-07-09 13:54:21 +03:00
Matte 1966324c31 patch 3.8.4 2020-07-09 13:52:30 +03:00
MatteZ02 c2e5e34088 patch 2020-07-05 17:34:39 +03:00
MatteZ02 1c0d89dada Update config.js 2020-07-05 17:03:28 +03:00
MatteZ02 2aca6b9c96 Chore update 3.8.2 2020-07-05 16:59:21 +03:00
MatteZ02 8e485cc5c0 Patch 2020-07-05 14:00:03 +03:00
MatteZ02 5f6c50fb9a 3.8.1 2020-07-04 23:08:19 +03:00
MatteZ02 c3fcd8338b Chore 3.8.1 2020-07-04 23:06:54 +03:00
MatteZ02 5a77443df6 Chore update 3.8 2020-07-04 22:17:20 +03:00
MatteZ02 ba3d17bb2a Update play.js 2020-07-03 11:23:26 +03:00
MatteZ02 2fb6267dd9 Update nowplaying.js 2020-07-02 18:42:43 +03:00
MatteZ02 d29c928be6 Update system.js 2020-07-02 18:14:51 +03:00
Matte e67ed2813d Update config.js 2020-07-01 21:52:34 +03:00
MatteZ02 8f7ff16497 Chore 3.7.2 2020-07-01 21:44:05 +03:00
MatteZ02 78131d1fde Update msg.js 2020-07-01 11:13:36 +03:00
MatteZ02 4f05312be8 Chore 3.7,1 2020-07-01 03:04:27 +03:00
MatteZ02 7b581a9bed Update checkDB.js 2020-07-01 01:49:34 +03:00
MatteZ02 c898827d81 Update stop.js 2020-06-30 21:15:55 +03:00
MatteZ02 3842f30bff fixes 2020-06-30 21:08:18 +03:00
MatteZ02 2353262322 Chore update 3.7 2020-06-30 20:43:00 +03:00
MatteZ02 0e25ac5752 Update blacklist.js 2020-06-29 20:48:44 +03:00
MatteZ02 83b56b73a0 fixed error logging of objects 2020-06-29 20:48:42 +03:00
MatteZ02 60e40029cd Merge branch 'master' of https://github.com/MatteZ02/Musix-V3 2020-06-29 19:09:34 +03:00
MatteZ02 052dfbcfbc make sure logs have arguments 2020-06-29 19:09:31 +03:00
Matte 92ead6dfca Delete README.md 2020-06-28 23:41:43 +03:00
Matte a0e9f54bd1 Update README.md 2020-06-28 23:40:34 +03:00
Matte 3486e47e18 Create README.md 2020-06-28 23:37:23 +03:00
MatteZ02 6386a672c5 shard logs 2020-06-23 21:05:44 +03:00
MatteZ02 65caded23d Update config.js 2020-06-23 19:40:53 +03:00
MatteZ02 263c4cd855 Update package.json 2020-06-23 19:40:51 +03:00
MatteZ02 780113355a chore 3.6.2 2020-06-23 19:34:14 +03:00
MatteZ02 2d7752d2cf additional error logging and debugging. 2020-06-22 00:41:30 +03:00
MatteZ02 70316495f5 chore update 3.6.1 2020-06-17 16:39:05 +03:00
MatteZ02 e0087d5b5f updated video search 2020-06-17 16:38:43 +03:00
Matte 71250a8cf3 Update messages.js 2020-06-17 15:03:39 +03:00
MatteZ02 e1492fb885 if devmode no logs will be sent 2020-06-17 13:20:35 +03:00
Matte 44ef6cf4bc Update config.js 2020-06-16 21:56:29 +03:00
MatteZ02 4b3b798ddc New config system and error logging 2020-06-16 21:51:11 +03:00
MatteZ02 3a1ad33dd6 Update handleVideo.js 2020-06-11 14:59:09 +03:00
MatteZ02 5eb85500ed Update seek.js 2020-06-11 14:59:07 +03:00
MatteZ02 860d68162d Update stop.js 2020-06-09 22:51:22 +03:00
MatteZ02 31d811790d Update client.js 2020-06-09 22:11:12 +03:00
MatteZ02 58f0b26b74 Merge branch 'master' of https://github.com/MatteZ02/Musix-V3 2020-06-09 22:10:00 +03:00
MatteZ02 4ede38c0f4 Update client.js 2020-06-09 22:09:56 +03:00
Matte ebca4c0706 Update restart.js 2020-06-09 21:29:28 +03:00
MatteZ02 635d7953b2 Update 3.6 2020-06-09 21:25:55 +03:00
MatteZ02 a0662fdf90 Update package.json 2020-06-08 15:47:17 +03:00
MatteZ02 f2d6a6b09c Update volume.js 2020-06-08 15:41:52 +03:00
MatteZ02 b70c0dc631 gateway intents (3.5.2) 2020-06-08 15:39:32 +03:00
MatteZ02 72ff4cad56 Update getSpotifyKey.js 2020-06-08 14:09:52 +03:00
MatteZ02 5bf311de45 Detailed errors 2020-06-08 13:41:49 +03:00
MatteZ02 2b60f0ec12 some fixes and updates 2020-06-04 17:46:43 +03:00
MatteZ02 35dba3b137 Update play.js 2020-06-04 13:41:37 +03:00
MatteZ02 a9561e667e Update play.js 2020-06-04 13:33:57 +03:00
MatteZ02 275b671c36 fixed 2020-06-04 13:24:17 +03:00
MatteZ02 ba319787a5 fixes 2020-06-04 13:11:14 +03:00
MatteZ02 04858d8a27 Timeout Catch 2020-06-04 08:41:11 +03:00
MatteZ02 1a04b7098f Update config.js 2020-06-04 08:26:50 +03:00
MatteZ02 0874818101 Update 3.5 2020-06-04 08:26:33 +03:00
MatteZ02 256585293e Updated command aliases 2020-05-15 19:05:39 +03:00
MatteZ02 b76af649f2 Chore update 3.4.0 2020-05-13 12:52:25 +03:00
MatteZ02 161b88d020 Mention commands 2020-05-13 12:52:12 +03:00
MatteZ02 8810b6c01c updated ytdl-core 2020-05-08 10:35:48 +03:00
MatteZ02 e3e70510b9 soundcloud 2020-05-07 13:54:15 +03:00
MatteZ02 206eacc307 Update voiceStateUpdate.js 2020-05-07 12:52:52 +03:00
MatteZ02 1a10374015 Update queue.js 2020-05-06 13:19:44 +03:00
MatteZ02 d9a0bc72f7 fixed remove 2020-05-06 13:16:16 +03:00
MatteZ02 ef670c6e61 Update remove.js 2020-05-06 13:12:01 +03:00
MatteZ02 9ddbcc3d25 Update remove.js 2020-05-06 13:09:05 +03:00
MatteZ02 fe38315c34 possible fix 2020-05-05 12:52:35 +03:00
Matte 1e760bb730 Update config.js 2020-05-01 21:03:32 +03:00
MatteZ02 2d0eacbf59 Update .gitignore 2020-05-01 20:47:22 +03:00
Matte fce62ed838 eww 2020-05-01 20:46:53 +03:00
MatteZ02 285c668037 Update config.js 2020-05-01 20:40:14 +03:00
MatteZ02 f036a834f2 Merge branch 'master' of https://github.com/MatteZ02/Musix-V3 2020-05-01 20:40:00 +03:00
MatteZ02 d08b684a57 opus 2020-05-01 20:39:47 +03:00
Matte 41b0c4bf43 Update config.js 2020-05-01 20:20:41 +03:00
MatteZ02 aefdf7eb73 updated modules 2020-05-01 20:14:06 +03:00
Matte af2126d701 Update config.js 2020-05-01 20:03:17 +03:00
MatteZ02 d56c25feb9 Update remove.js 2020-04-30 11:56:20 +03:00
Matte 0d2787cce1 Update config.js 2020-04-29 14:47:23 +03:00
MatteZ02 1158d32910 Update 3.3 2020-04-29 14:41:16 +03:00
Matte 07fd7df141 Update config.js 2020-04-28 12:14:38 +03:00
Matte f9715457d9 Update botListApi.js 2020-04-28 12:06:15 +03:00
MatteZ02 a7282e40cf Update msg.js 2020-04-28 12:00:58 +03:00
MatteZ02 c2d527d9c6 Update msg.js 2020-04-27 15:54:54 +03:00
MatteZ02 83b449e17f Update botListApi.js 2020-04-27 15:54:37 +03:00
MatteZ02 b33b82936d fixed remove placeholder 2020-04-25 22:07:47 +03:00
MatteZ02 fa4857dc62 Update botListApi.js 2020-04-25 22:00:30 +03:00
MatteZ02 754614e2fb Update remove.js 2020-04-25 22:00:27 +03:00
MatteZ02 4642ed1bc8 Update ready.js 2020-04-25 19:27:39 +03:00
MatteZ02 1c01747db9 Update botListApi.js 2020-04-25 19:27:07 +03:00
MatteZ02 41448c0ea2 Update botListApi.js 2020-04-25 19:23:54 +03:00
MatteZ02 cd15edbedc Update botListApi.js 2020-04-25 19:20:19 +03:00
MatteZ02 e39f1dfb62 Update botListApi.js 2020-04-25 19:18:50 +03:00
MatteZ02 d9b44a3d58 Update botListApi.js 2020-04-25 19:01:11 +03:00
MatteZ02 48e1d85321 Update config.js 2020-04-25 18:59:38 +03:00
MatteZ02 cfee618ae1 Update botListApi.js 2020-04-25 18:59:34 +03:00
MatteZ02 f3fb31466d fix 2020-04-25 12:56:13 +03:00
MatteZ02 6c44051a9d Update getSpotifyKey.js 2020-04-25 12:33:40 +03:00
MatteZ02 ee949b5cb8 botList api 2020-04-25 12:33:36 +03:00
MatteZ02 55164ae0f3 Update play.js 2020-04-24 21:36:30 +03:00
MatteZ02 cbdc82a655 Validate url
Validate url for precise song accuracy when using a link to play a song
2020-04-24 21:35:50 +03:00
MatteZ02 6408cbe525 version and some formatting to play func 2020-04-23 19:18:57 +03:00
Matte 3f1aedfef8 Update .gitignore 2020-04-22 13:36:37 +03:00
MatteZ02 1f33d5b55a Update ready.js 2020-04-21 22:23:15 +03:00
MatteZ02 0f77027860 Update config.js 2020-04-21 22:21:54 +03:00
MatteZ02 e829eeaf8f remove setkey 2020-04-21 22:19:40 +03:00
MatteZ02 32ae8cbb6e Update package.json 2020-04-21 22:17:12 +03:00
MatteZ02 77127775df Update search.js 2020-04-21 22:16:21 +03:00
MatteZ02 2a692edf8d Update 3.2.2 2020-04-21 22:10:30 +03:00
MatteZ02 3532cc00d3 fix 2020-04-21 14:29:36 +03:00
MatteZ02 32c476a3f6 Update play.js 2020-04-21 13:52:36 +03:00
MatteZ02 a35355c669 config 2020-04-20 19:56:48 +03:00
MatteZ02 a6e3e8b0de to js 2020-04-20 19:56:23 +03:00
MatteZ02 2d55a3a8da Update premium.ts 2020-04-19 23:26:31 +03:00
MatteZ02 7fc4576fb0 3.2 fixes and improvements 2020-04-19 23:21:06 +03:00
MatteZ02 03516e4074 REEEEEEE 2020-04-19 20:34:38 +03:00
MatteZ02 b5445caf47 Update config.ts 2020-04-19 20:04:04 +03:00
MatteZ02 ec07bdb5a3 Update V3.2.0 2020-04-19 20:00:16 +03:00
MatteZ02 ce214a827f Update streamConfig.ts 2020-04-17 11:37:19 +03:00
MatteZ02 27a8b7f34b Update config.ts 2020-04-16 23:12:29 +03:00
MatteZ02 a81c7fa46e Update package-lock.json 2020-04-16 23:10:33 +03:00
MatteZ02 3314208ec2 Update config.ts 2020-04-16 23:08:12 +03:00
MatteZ02 41ec084ab1 update V3.1.1 2020-04-16 23:07:57 +03:00
MatteZ02 a35318cea8 updated ytdl and streamOps 2020-04-15 10:20:45 +03:00
MatteZ02 ccb9e332f5 Update handleVideo.ts 2020-04-14 12:54:53 +03:00
MatteZ02 7c7b0f0f26 Update handleVideo.ts 2020-04-13 14:30:20 +03:00
MatteZ02 7ad27e51cc Update handleVideo.ts 2020-04-13 14:04:09 +03:00
MatteZ02 76f4873c78 fixed queue conflict 2020-04-13 13:57:39 +03:00
MatteZ02 54e7e8ab9b updated modules (V3.1.0) 2020-04-08 21:22:57 +03:00
MatteZ02 fa30ca2333 Update nigthcore.ts 2020-04-08 21:07:00 +03:00
MatteZ02 2492901dea Update emojis.ts 2020-04-08 21:01:29 +03:00
MatteZ02 1beb0fa86a nigthCore added 2020-04-08 20:48:57 +03:00
MatteZ02 0af2ca1d44 fixes 2020-04-06 21:57:45 +03:00
MatteZ02 0aea99755c emojis to a seperate file 2020-04-06 19:30:14 +03:00
Matte f53bfd2745 Update saveDB.ts 2020-04-06 00:31:05 +03:00
Matte 7ece5cd91c Update config.ts 2020-04-06 00:22:30 +03:00
MatteZ02 a47ffd1012 Debug channel conflict resolved 2020-04-06 00:20:34 +03:00
Matte a06f616a98 Update config.ts 2020-03-24 12:08:57 +02:00
MatteZ02 e20d0e18e0 update 3.0.5 2020-03-24 12:02:07 +02:00
MatteZ02 11cea679d1 updated video search 2020-03-23 09:59:09 +02:00
MatteZ02 7e20f54362 Update V3.0.4 2020-03-21 19:49:25 +02:00
MatteZ02 b9f0eb3a96 Update voiceStateUpdate.js 2020-03-20 22:55:31 +02:00
MatteZ02 1a5fc5985c api quota 2020-03-19 22:17:37 +02:00
MatteZ02 4d5c33ddf7 Update play.js 2020-03-19 20:34:20 +02:00
Matte 262917d623 Update play.js 2020-03-19 20:25:38 +02:00
MatteZ02 514bb9b83e Update play.js 2020-03-19 19:49:21 +02:00
MatteZ02 e780d08b00 Update config.js 2020-03-19 19:48:50 +02:00
MatteZ02 104c68e758 mOrE KeYS 2020-03-19 19:48:41 +02:00
MatteZ02 27c15e1f33 Update config.js 2020-03-19 16:47:33 +02:00
MatteZ02 16a5e4ea6d new event handling 2020-03-19 16:45:05 +02:00
MatteZ02 2ca0306928 ffmpeg test 2020-03-15 22:09:00 +02:00
MatteZ02 b0886a78a0 Update config.js 2020-03-15 22:02:22 +02:00
MatteZ02 77195df267 Update ffmpeg.js 2020-03-15 21:57:28 +02:00
MatteZ02 9f0a747026 Update voiceStateUpdate.js 2020-03-15 21:52:39 +02:00
MatteZ02 4ebe625ce0 compact 2020-03-15 21:52:36 +02:00
MatteZ02 7c182dee57 priv 2020-03-14 23:17:16 +02:00
MatteZ02 9b34e33c36 Update config.js 2020-03-14 18:41:06 +02:00
MatteZ02 4a76582f76 Updated multiple things 2020-03-14 18:38:02 +02:00
MatteZ02 ed1322cff6 Update messages.js 2020-03-13 23:55:15 +02:00
Matte ebe02d9d06 Update config.js 2020-03-13 22:59:20 +02:00
MatteZ02 76af59980b Update config.js 2020-03-13 22:42:45 +02:00
Matte 2da0374fb6 Update config.js 2020-03-13 22:33:37 +02:00
MatteZ02 d8ec0be2c9 Sharding 2020-03-13 22:31:04 +02:00
MatteZ02 34a5d26829 Fixed some errors and messages 2020-03-13 16:20:23 +02:00
MatteZ02 e15e81d9fe Moved rest of the messages to messages file 2020-03-12 23:07:44 +02:00
MatteZ02 dd2f33873b Update messages.js
sorted A-Z
2020-03-12 14:36:36 +02:00
MatteZ02 a64f9d2325 Update 3.0.3
All messages reworked.
2020-03-12 13:56:31 +02:00
MatteZ02 f985744170 Update skip.js 2020-03-11 19:15:35 +02:00
MatteZ02 1fe65e0f72 Update skip.js 2020-03-11 19:09:18 +02:00
MatteZ02 869debb1b3 Update exe.js 2020-03-11 17:49:31 +02:00
MatteZ02 6b50165e6f Update exe.js 2020-03-11 17:37:47 +02:00
MatteZ02 dfa2093026 Update msg.js 2020-03-11 17:37:45 +02:00
Matte f9662bc174 External emojis permissions check 2020-03-11 14:06:15 +02:00
MatteZ02 337e2e0296 updated seek 2020-03-08 11:38:31 +02:00
MatteZ02 4cc7e8e56a Update client.js 2020-03-08 11:32:14 +02:00
MatteZ02 9f5816c298 Update ready.js 2020-03-04 23:22:20 +02:00
MatteZ02 1e26e3bb95 Update voiceStateUpdate.js 2020-03-04 23:19:02 +02:00
MatteZ02 dc35e730a7 auto leave 2020-03-04 23:17:45 +02:00
MatteZ02 7637cb3e84 no reasons 2020-03-04 23:17:33 +02:00
MatteZ02 1813f6b03f Update voiceStateUpdate.js 2020-03-04 22:29:12 +02:00
MatteZ02 6bf3ffdfc9 voiceStateUpdate 2020-03-04 22:27:14 +02:00
MatteZ02 4583917947 Update client.js 2020-03-04 19:19:43 +02:00
MatteZ02 aa9fd1b2c8 Update client.js 2020-03-04 18:21:23 +02:00
MatteZ02 0e046a7757 Update end.js 2020-03-04 18:21:20 +02:00
MatteZ02 55cddcbb42 Update status.js 2020-03-04 18:04:29 +02:00
MatteZ02 bfc8ca228c bass 2020-03-04 16:32:39 +02:00
MatteZ02 2aaf53d205 packages 2020-03-04 16:27:00 +02:00
MatteZ02 a04fd0344b Update package.json 2020-03-04 16:25:18 +02:00
MatteZ02 a82b153aa7 Update .gitignore 2020-03-04 16:02:24 +02:00
MatteZ02 f69d3c6de2 modules 2020-03-04 16:01:35 +02:00
MatteZ02 963e464072 Update .gitignore 2020-03-04 15:50:10 +02:00
MatteZ02 972d861465 opus 2020-03-04 13:43:26 +02:00
MatteZ02 da84fcfed1 opus 2020-03-04 13:43:21 +02:00
MatteZ02 79f8a18164 node-opus 2020-03-04 13:37:36 +02:00
MatteZ02 b8ab9a6f23 node-opus 2020-03-04 13:36:49 +02:00
MatteZ02 36d4dc2c75 Update play.js 2020-03-03 22:58:37 +02:00
MatteZ02 75ce4f42bc Merge branch 'master' of https://github.com/MatteZ02/Musix-V3 2020-03-03 22:48:40 +02:00
MatteZ02 c23ee7c3ac Update play.js 2020-03-03 22:44:04 +02:00
Matte 745dd9b748 Update config.js 2020-03-03 22:34:01 +02:00
MatteZ02 30022c7634 Modules 2020-03-03 22:30:50 +02:00
MatteZ02 edfcc6f474 u 2020-03-03 22:25:12 +02:00
MatteZ02 58c5c3065a Update 3.0.2 2020-03-03 22:24:41 +02:00
MatteZ02 295f5521e9 Update config.js 2020-03-01 16:56:06 +02:00
MatteZ02 f2c8655807 Update handleVideo.js 2020-03-01 16:55:52 +02:00
MatteZ02 484524c17e Update config.js 2020-03-01 16:54:56 +02:00
MatteZ02 3e2dc2fcb9 Update remove.js 2020-02-28 16:11:33 +02:00
MatteZ02 08a0adb3dd Update ready.js 2020-02-27 08:32:06 +02:00
MatteZ02 7ba27dfbcf Update restart.js 2020-02-24 21:18:17 +02:00
MatteZ02 5f8bf29696 Create restart.js 2020-02-24 21:17:24 +02:00
MatteZ02 1526400869 Update index.js 2020-02-24 21:17:19 +02:00
MatteZ02 3304d2e58a Update reload.js 2020-02-24 21:17:10 +02:00
MatteZ02 504aadd2a8 Update reload.js 2020-02-24 21:13:02 +02:00
MatteZ02 75021a43bf Update reload.js 2020-02-24 21:12:22 +02:00
MatteZ02 1a0fe6ee2d Create reload.js 2020-02-24 21:11:27 +02:00
MatteZ02 fbee737e4e Update ready.js 2020-02-24 21:04:20 +02:00
MatteZ02 690ce7755d command usage 2020-02-24 20:41:40 +02:00
MatteZ02 5a5ee2b324 Update skipto.js 2020-02-24 20:36:48 +02:00
MatteZ02 25e73a10aa Update check.js 2020-02-24 20:31:54 +02:00
MatteZ02 9e71c3acae Update check.js 2020-02-24 20:30:55 +02:00
MatteZ02 7a37867214 Update play.js 2020-02-24 20:10:55 +02:00
MatteZ02 31bfff0552 removed bass 2020-02-20 22:32:27 +02:00
MatteZ02 282ac01b3b update 2020-02-20 22:31:03 +02:00
MatteZ02 6c0ed31c1b Update setDj.js 2020-02-19 22:05:21 +02:00
MatteZ02 e8363d4550 Update setDj.js 2020-02-19 22:04:06 +02:00
MatteZ02 1c4213c0c4 Update skip.js 2020-02-19 22:00:42 +02:00
MatteZ02 c09163bc0d Update exe.js 2020-02-19 21:58:32 +02:00
MatteZ02 7b4a0e06fc Merge branch 'master' of https://github.com/MatteZ02/Musix-V3 2020-02-19 11:27:44 +02:00
MatteZ02 d4b3304e45 Update ready.js 2020-02-19 11:24:26 +02:00
Matte 096de6f9ac Update ready.js 2020-02-13 05:38:40 +02:00
Matte db133c587d Update config.js 2020-02-13 05:36:09 +02:00
MatteZ02 8e929f2c1f Update exe.js 2020-02-13 05:32:31 +02:00
MatteZ02 19cd00e736 Update config.js 2020-02-13 05:26:40 +02:00
MatteZ02 ca8c70c4f3 status and fix ffmpeg 2020-02-13 05:24:30 +02:00
Matte 7c5a6f840c Delete serviceAccount.json 2020-02-13 05:21:37 +02:00
MatteZ02 d28e709b9d dev 2020-02-12 21:59:36 +02:00
MatteZ02 f12ed4581d preps 2020-02-12 21:48:44 +02:00
MatteZ02 42203096d7 preps 2020-02-12 21:38:48 +02:00
MatteZ02 7737c12a95 forgot the console.logs :) 2020-02-11 21:35:45 +02:00
MatteZ02 3033217632 Update search.js 2020-02-11 21:32:27 +02:00
MatteZ02 a3d929f252 Update ffmpeg.js 2020-02-11 08:23:03 +02:00
MatteZ02 3a0d3b7f7c Update exe.js 2020-02-10 21:58:38 +02:00
MatteZ02 8708133e1f Update skip.js 2020-02-10 21:56:43 +02:00
MatteZ02 b776997c38 Update msToTime.js 2020-02-10 21:54:40 +02:00
MatteZ02 5351d74226 Update skip.js 2020-02-10 21:53:49 +02:00
MatteZ02 0829af0d3a Update msToTime.js 2020-02-10 21:36:12 +02:00
Matte 531790edbe Merge pull request #3 from cwchristerw/time
Added days :D
2020-02-10 21:26:23 +02:00
Christer Warén 54268800a3 Added days :D 2020-02-10 21:24:09 +02:00
Matte 5c7706c4d9 Merge pull request #1 from cwchristerw/readme
Create README.md
2020-02-10 21:14:05 +02:00
Matte 9e3130920e Merge pull request #2 from cwchristerw/license-year-fix
Changing year
2020-02-10 21:13:44 +02:00
Christer Warén c3daff3dcd Changing year 2020-02-10 21:12:11 +02:00
Christer Warén 26f1987c62 Create README.md 2020-02-10 21:10:40 +02:00
MatteZ02 d2d8cfbbdc Update package.json 2020-02-10 21:09:31 +02:00
MatteZ02 ee246734aa removed src 2020-02-10 21:08:46 +02:00
MatteZ02 f28c2fcd77 Create LICENSE 2020-02-10 21:08:02 +02:00
MatteZ02 e9a83e2f87 msToTime format 2020-02-10 21:07:09 +02:00
MatteZ02 c1bbdf9532 update 2020-02-10 21:04:42 +02:00
MatteZ02 8647d8782f Update play.js 2020-02-06 22:06:40 +02:00
MatteZ02 3b931d4cae Update client.js 2020-02-06 21:55:44 +02:00
MatteZ02 300714774e Update client.js 2020-02-06 08:04:15 +02:00
MatteZ02 57a4f5187b Update remove.js 2020-02-06 07:58:03 +02:00
MatteZ02 3b7f80cbc3 Update play.js 2020-02-05 22:26:18 +02:00
MatteZ02 cc4d9c8b28 Update index.js 2020-02-05 22:19:00 +02:00
MatteZ02 2f81d6f1a9 Update config.js 2020-02-05 22:10:20 +02:00
MatteZ02 d343af3b14 Init 2020-02-05 22:02:53 +02:00
109 changed files with 3275 additions and 2623 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
node_modules
.env
.vscode
node_modules
serviceAccount.json
-58
View File
@@ -1,58 +0,0 @@
const { Client, Collection } = require('discord.js');
const admin = require('firebase-admin');
require('dotenv/config');
module.exports = class extends Client {
constructor() {
super({
intents: [
"Guilds",
"GuildMessages",
"GuildVoiceStates",
"MessageContent"
],
disableMentions: "everyone",
disabledEvents: ["TYPING_START"]
});
this.commands = new Collection();
this.commandAliases = new Collection();
this.playlistCmd = new Collection();
this.settingCmd = new Collection();
this.events = new Collection();
this.queue = new Map();
this.funcs = {};
this.funcs.handleVideo = require('./funcs/handleVideo.js');
this.funcs.play = require('./funcs/play.js');
this.funcs.msToTime = require('./funcs/msToTime.js');
this.funcs.exe = require('./funcs/exe.js');
this.config = require('./config.js');
this.global = {
db: {
guilds: {},
playlists: {},
},
};
if(this.config.firebase.serviceAccount){
this.funcs.dbget = require('./funcs/dbget.js');
admin.initializeApp({
credential: admin.credential.cert(this.config.firebase.serviceAccount),
});
this.db = admin.firestore();
this.db.FieldValue = require('firebase-admin').firestore.FieldValue;
}
}
};
-3
View File
@@ -3,9 +3,6 @@ FROM docker.io/node:20-alpine
#Dependencies
RUN apk add --virtual .build-deps python3 make g++ gcc git
#Code Dependencies
RUN apk add --virtual .code-deps ffmpeg
WORKDIR /usr/src/app
COPY / /usr/src/app/
+1 -1
View File
@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2019-2024 Musix Org
Copyright (c) 2020-2024 Musix Org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+1 -21
View File
@@ -1,21 +1 @@
# Musix-V2
THIS VERSION OF MUSIX IS NO LONGER SUPPORTED!
## Discord music bot
Second version of Musix discord music bot.
Made with discord.js V11
NOTE! THIS BOT CANNOT BE USED AFTER OCTOBER 4TH 2020! This is due to new rules for bots by discord.
## Installation
npm install (idk how yarn works)
Some modules are outdated to updating is recommended!
## Usage
You will need you own .env file and serviceAccount.json for database!
# Musix OSS - V3
-32
View File
@@ -1,32 +0,0 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: 'help',
description: 'Help command.',
alias: 'help',
cooldown: 5,
execute(message, args, client, prefix) {
const embed = new EmbedBuilder()
.setTitle(`Commands for ${client.user.username}!`)
.addFields(
{ name: `${prefix}play | ${prefix}p`, value: 'Play a song.', inline: true },
{ name: `${prefix}skip | ${prefix}s`, value: 'Skip a song.', inline: true },
{ name: `${prefix}queue | ${prefix}q`, value: 'Display the queue.', inline: true },
{ name: `${prefix}nowplaying | ${prefix}np`, value: 'Display what\'s currently playing.', inline: true },
{ name: `${prefix}remove | ${prefix}rm`, value: 'Remove songs from the queue.', inline: true },
{ name: `${prefix}volume`, value: 'Change or check the volume.', inline: true },
{ name: `${prefix}pause`, value: 'Pause the music.', inline: true },
{ name: `${prefix}resume`, value: 'Resume the music.', inline: true },
{ name: `${prefix}loop`, value: 'Loop the queue.', inline: true },
{ name: `${prefix}seek`, value: 'Seek music.', inline: true },
{ name: `${prefix}stop`, value: 'Stop the music, Clear the queue and leave the current voice channel.', inline: true },
{ name: `${prefix}invite`, value: 'Invite Musix.', inline: true },
{ name: `${prefix}status`, value: 'See different information for Musix.', inline: true },
{ name: `${prefix}settings`, value: 'Change the guild specific settings.', inline: true },
{ name: `${prefix}help`, value: 'Display the help.', inline: true }
)
.setAuthor({ name: client.user.username, iconURL: client.user.avatarURL()})
.setColor(client.config.embedColor)
return message.channel.send({ embeds: [embed] });
}
};
-15
View File
@@ -1,15 +0,0 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: 'invite',
description: 'Invite command.',
alias: 'invite',
cooldown: 5,
execute(message, args, client, prefix) {
const embed = new EmbedBuilder()
.setTitle(`Invite ${client.user.username} to your Discord server!`)
.setURL(`https://discord.com/oauth2/authorize?client_id=${client.user.id}&permissions=2184465408&scope=applications.commands+bot`)
.setColor(client.config.embedColor)
return message.channel.send({ embeds: [embed] });
}
};
-27
View File
@@ -1,27 +0,0 @@
const { PermissionFlagsBits } = require('discord.js');
module.exports = {
name: 'loop',
description: 'loop command.',
alias: 'loop',
cooldown: 10,
async execute(message, args, client, prefix) {
const serverQueue = client.queue.get(message.guild.id);
const permissions = message.channel.permissionsFor(message.author);
const voiceChannel = message.member.voice.channel;
if (!serverQueue) return message.channel.send(':x: There is nothing playing.');
if (voiceChannel !== serverQueue.voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in the same voice channel as Musix to loop the queue!');
if (client.global.db.guilds[message.guild.id].permissions === true) {
if (client.global.db.guilds[message.guild.id].dj) {
if (!message.member.roles.cache.has(client.global.db.guilds[message.guild.id].djrole)) return message.channel.send(':x: You need the `DJ` role to loop the queue!');
} else if (!permissions.has(PermissionFlagsBits.ManageChannels)) return message.channel.send(':x: You need the `MANAGE_MESSAGES` permission to loop the queue!');
}
if (!serverQueue.looping) {
serverQueue.looping = true;
message.channel.send(':repeat: Looping the queue now!');
} else {
serverQueue.looping = false;
message.channel.send(':repeat: No longer looping the queue!');
}
}
};
-27
View File
@@ -1,27 +0,0 @@
const { EmbedBuilder } = require('discord.js');
module.exports = {
name: 'nowplaying',
description: 'Now playing command.',
alias: 'np',
cooldown: 5,
async execute(message, args, client, prefix) {
const ytdl = require('ytdl-core');
const serverQueue = client.queue.get(message.guild.id);
if (!serverQueue) return message.channel.send(':x: There is nothing playing.');
if (!serverQueue.playing) return message.channel.send(':x: There is nothing playing.');
let data = await Promise.resolve(ytdl.getInfo(serverQueue.songs[0].url));
let songtime = (data.length_seconds * 1000).toFixed(0);
let completed = (serverQueue.connection.dispatcher.time).toFixed(0);
let barlength = 30;
let completedpercent = ((completed / songtime) * barlength).toFixed(0);
let array = []; for (let i = 0; i < completedpercent - 1; i++) { array.push('⎯'); } array.push('⭗'); for (let i = 0; i < barlength - completedpercent - 1; i++) { array.push('⎯'); }
const embed = new EmbedBuilder()
.setTitle("__Now playing__")
.setDescription(`🎶**Now playing:** ${serverQueue.songs[0].title}\n${array.join('')} | \`${client.funcs.msToTime(completed)} / ${client.funcs.msToTime(songtime)}\``)
.setFooter({ text: `Queued by ${serverQueue.songs[0].author.tag}` })
.setURL(serverQueue.songs[0].url)
.setColor(client.config.embedColor)
return message.channel.send({ embeds: [embed] });
}
};
-25
View File
@@ -1,25 +0,0 @@
const { PermissionFlagsBits } = require('discord.js');
module.exports = {
name: 'pause',
description: 'Pause command.',
alias: 'pause',
cooldown: 5,
execute(message, args, client, prefix) {
const serverQueue = client.queue.get(message.guild.id);
const permissions = message.channel.permissionsFor(message.author);
const voiceChannel = message.member.voice.channel;
if (!serverQueue) return message.channel.send(':x: There is nothing playing.');
if (serverQueue.playing && !serverQueue.paused) {
if (voiceChannel !== serverQueue.voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in the same voice channel as Musix to pause the music!');
if (client.global.db.guilds[message.guild.id].permissions === true) {
if (client.global.db.guilds[message.guild.id].dj) {
if (!message.member.roles.cache.has(client.global.db.guilds[message.guild.id].djrole)) return message.channel.send(':x: You need the `DJ` role to pause the music!');
} else if (!permissions.has(PermissionFlagsBits.ManageMessages)) return message.channel.send(':x: You need the `MANAGE_MESSAGES` permission to pause the music!');
}
serverQueue.paused = true;
serverQueue.audioPlayer.pause();
return message.channel.send('⏸ Paused the music!');
} else return message.channel.send(':x: There is nothing playing.');
}
};
-86
View File
@@ -1,86 +0,0 @@
const YouTube = require("simple-youtube-api");
const he = require('he');
const { EmbedBuilder, PermissionFlagsBits } = require("discord.js");
module.exports = {
name: 'play',
description: 'Play command.',
usage: '[song name]',
alias: 'p',
args: true,
cooldown: 3,
async execute(message, args, client, prefix) {
const youtube = new YouTube(client.config.youtube_api_key);
const searchString = args.slice(1).join(" ");
const url = args[1] ? args[1].replace(/<(.+)>/g, "$1") : "";
const serverQueue = client.queue.get(message.guild.id);
const voiceChannel = message.member.voice.channel;
if (!serverQueue) {
if (!voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in a voice channel to play music!');
} else {
if (voiceChannel !== serverQueue.voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in the same voice channel as Musix to play music!');
}
if (!args[1]) return message.channel.send(':x: You need to use a link or search for a song!');
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has(PermissionFlagsBits.Connect)) {
return message.channel.send(':x: I cannot connect to your voice channel, make sure I have the proper permissions!');
}
if (!permissions.has(PermissionFlagsBits.Speak)) {
return message.channel.send(':x: I cannot speak in your voice channel, make sure I have the proper permissions!');
}
if (url.match(/^https?:\/\/(www.youtube.com|youtube.com)\/playlist(.*)$/)) {
const playlist = await youtube.getPlaylist(url);
const videos = await playlist.getVideos();
for (const video of Object.values(videos)) {
const video2 = await youtube.getVideoByID(video.id);
await client.funcs.handleVideo(video2, message, voiceChannel, client, true);
}
return message.channel.send(`:white_check_mark: Playlist: **${playlist.title}** has been added to the queue!`);
} else if (client.global.db.guilds[message.guild.id].songSelection) {
try {
var video = await youtube.getVideo(url);
} catch (error) {
try {
var videos = await youtube.searchVideos(searchString, 10);
let index = 0;
const embed = new EmbedBuilder()
.setTitle("__Song Selection__")
.setDescription(`${videos.map(video2 => `**${++index}** ${he.decode(video2.title)} `).join('\n')}`)
.setFooter({ text: "Please provide a number ranging from 1-10 to select one of the search results." })
.setColor(client.config.embedColor)
message.channel.send({ embeds: [embed] });
try {
var response = await message.channel.awaitMessages({
filter: message2 => message2.content > 0 && message2.content < 11 && message2.author === message.author,
max: 1,
time: 10000,
errors: ['time']
});
} catch (err) {
console.error(err);
return message.channel.send(':x: Cancelling video selection');
}
const videoIndex = parseInt(response.first().content);
var video = await youtube.getVideoByID(videos[videoIndex - 1].id);
} catch (err) {
console.error(err);
return message.channel.send(':x: I could not obtain any search results!');
}
}
return client.funcs.handleVideo(video, message, voiceChannel, client, false);
} else {
try {
var video = await youtube.getVideo(url);
} catch (error) {
try {
var videos = await youtube.searchVideos(searchString, 1);
var video = await youtube.getVideoByID(videos[0].id);
} catch (err) {
console.error(err);
return message.channel.send(':x: I could not obtain any search results!');
}
}
return client.funcs.handleVideo(video, message, voiceChannel, client, false);
}
}
};
-44
View File
@@ -1,44 +0,0 @@
const YouTube = require("simple-youtube-api");
const he = require('he');
const { EmbedBuilder, PermissionFlagsBits } = require("discord.js");
module.exports = {
name: 'playlist',
usage: '[option]',
description: 'Save and load queues',
alias: 'pl',
cooldown: 10,
async execute(message, args, client, prefix) {
const embed = new EmbedBuilder()
.setTitle('Options for playlist!')
.addFields(
{ name: 'play', value: 'Play the guild specific queue.', inline: true },
{ name: 'save', value: 'Save the currently playing queue. Note that this will overwrite the currently saved queue!', inline: true },
{ name: 'add', value: 'Add songs to the playlist. Like song selection', inline: true },
{ name: 'remove', value: 'Remove songs from the playlist.', inline: true },
{ name: 'list', value: 'Display the playlist.', inline: true }
)
.setFooter({ text: `how to use: ${prefix}playlist <Option> <Optional option>` })
.setAuthor({ name: client.user.username, iconURL: client.user.avatarURL()})
.setColor(client.config.embedColor)
const permissions = message.channel.permissionsFor(message.author);
if (client.global.db.guilds[message.guild.id].dj) {
if (!message.member.roles.cache.has(client.global.db.guilds[message.guild.id].djrole)) return message.channel.send(':x: You need the `DJ` role to modify or play the playlist!');
} else if (!permissions.has(PermissionFlagsBits.ManageGuild)) return message.channel.send(':x: You need the `MANAGE_SERVER` permission to modify the playlist!');
if (client.global.db.guilds[message.guild.id].premium) {
if (args[1]) {
const optionName = args[1].toLowerCase();
const option = client.playlistCmd.get(optionName) || client.playlistCmd.find(cmd => cmd.aliases && cmd.aliases.includes(optionName));
if (!option) return message.channel.send({ embeds: [embed] });
try {
option.execute(message, args, client, prefix);
} catch (error) {
message.reply(`:x: there was an error trying to execute that option!`);
console.log(error);
}
} else {
return message.channel.send({ embeds: [embed] });
}
} else return message.channel.send(":x: This is not a premium guild!");
},
};
-53
View File
@@ -1,53 +0,0 @@
const YouTube = require("simple-youtube-api");
const he = require('he');
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: 'add',
async execute(message, args, client, prefix) {
if (client.global.db.playlists[message.guild.id].saved) {
const serverQueue = client.queue.get(message.guild.id);
const youtube = new YouTube(client.config.youtube_api_key);
const searchString = args.slice(2).join(" ");
const url = args[2] ? args[2].replace(/<(.+)>/g, "$1") : "";
if (!args[2]) return message.channel.send(':x: You need to use a link or search for a song!');
try {
var video = await youtube.getVideo(url);
} catch (error) {
try {
var videos = await youtube.searchVideos(searchString, 10);
let index = 0;
const embed = new EmbedBuilder()
.setTitle("__Song Selection__")
.setDescription(`${videos.map(video2 => `**${++index}** ${he.decode(video2.title)} `).join('\n')}`)
.setFooter({ text: "Please provide a number ranging from 1-10 to select one of the search results." })
.setColor("#b50002")
message.channel.send({ embeds: [embed] });
try {
var response = await message.channel.awaitMessages({
filter: message2 => message2.content > 0 && message2.content < 11,
max: 1,
time: 10000,
errors: ['time']
});
} catch (err) {
console.error(err);
return message.channel.send(':x: Cancelling video selection');
}
const videoIndex = parseInt(response.first().content);
var video = await youtube.getVideoByID(videos[videoIndex - 1].id);
} catch (err) {
console.error(err);
return message.channel.send(':x: I could not obtain any search results!');
}
}
let song = {
id: video.id,
title: he.decode(video.title),
url: `https://www.youtube.com/watch?v=${video.id}`
}
client.global.db.playlists[message.guild.id].songs.push(song);
message.channel.send(`:white_check_mark: ${song.title} added to the playlist!`);
} else return message.channel.send(':x: There is no playlist saved! Start by using the save option!');
}
};
-11
View File
@@ -1,11 +0,0 @@
module.exports = {
name: 'delete',
async execute(message, args, client, prefix) {
client.global.db.playlists[message.guild.id] = {
songs: [],
firstSong: undefined,
saved: false,
};
message.channel.send(':wastebasket: Deleted the playlist.');
}
};
-24
View File
@@ -1,24 +0,0 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: 'list',
async execute(message, args, client, prefix) {
if (args[2]) {
if (isNaN(args[2])) return msg.channel.send(':x: I\'m sorry, But you need to enter a valid __number__.');
}
let page = parseInt(args[2]);
if (!page) page = 1;
let pagetext = `:page_facing_up: Page: ${page} :page_facing_up:`
let queuesongs = client.global.db.playlists[message.guild.id].songs.slice((page - 1) * 20, page * 20);
let queuemessage = `${queuesongs.map(song => `**#** ${song.title}`).join('\n')}`
const hashs = queuemessage.split('**#**').length;
for (let i = 0; i < hashs; i++) {
queuemessage = queuemessage.replace('**#**', `**${i + 1}**`);
}
const embed = new EmbedBuilder()
.setTitle("__playlist queue__")
.setDescription(`${pagetext}\n${queuemessage}`)
.setColor("#b50002")
return message.channel.send({ embeds: [embed] });
}
};
-69
View File
@@ -1,69 +0,0 @@
const { PermissionFlagsBits } = require("discord.js");
const { createAudioPlayer, getVoiceConnection, joinVoiceChannel, NoSubscriberBehavior } = require("@discordjs/voice");
module.exports = {
name: 'play',
async execute(message, args, client, prefix) {
const serverQueue = client.queue.get(message.guild.id);
const voiceChannel = message.member.voice.channel;
if (!voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in a voice channel to play music!');
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has(PermissionFlagsBits.Connect)) {
return message.channel.send(':x: I cannot connect to your voice channel, make sure I have the proper permissions!');
}
if (!permissions.has(PermissionFlagsBits.Speak)) {
return message.channel.send(':x: I cannot speak in your voice channel, make sure I have the proper permissions!');
}
let songs;
if (!voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in a voice channel to play music!');
if (args[2]) {
if (client.global.db.guilds[args[2]].premium && client.global.db.playlists[args[2]].saved) {
songs = client.global.db.playlists[args[2]].songs;
} else return message.channel.send(':x: There is no queue saved for this guild!')
} else {
songs = client.global.db.playlists[message.guild.id].songs;
}
if (client.global.db.playlists[message.guild.id].saved) {
if (!serverQueue) {
const construct = {
textChannel: message.channel,
voiceChannel: message.member.voice.channel,
connection: null,
audioPlayer: createAudioPlayer({
behaviors: {
noSubscriber: NoSubscriberBehavior.Play,
}
}),
songs: [...songs],
volume: client.global.db.guilds[message.guild.id].defaultVolume,
playing: false,
looping: false,
paused: false,
votes: 0,
voters: [],
votesNeeded: null
};
client.queue.set(message.guild.id, construct);
message.channel.send(":white_check_mark: Queue set!");
try {
const connection =
getVoiceConnection(voiceChannel.guild.id) ??
joinVoiceChannel({
channelId: voiceChannel.id,
guildId: voiceChannel.guild.id,
adapterCreator: voiceChannel.guild.voiceAdapterCreator
});
construct.connection = connection;
client.funcs.play(message.guild, construct.songs[0], client, message, 0, false);
} catch (error) {
client.queue.delete(message.guild.id);
return message.channel.send(`:x: An error occured: ${error}`);
}
} else {
serverQueue.audioPlayer.stop();
serverQueue.songs = [...client.global.db.playlists[message.guild.id].songs];
message.channel.send(":white_check_mark: Queue set!");
}
} else return message.channel.send(':x: There is no queue set for this server!')
}
};
-13
View File
@@ -1,13 +0,0 @@
module.exports = {
name: 'remove',
async execute(message, args, client, prefix) {
if (client.global.db.playlists[message.guild.id].saved) {
if (!args[2]) return message.channel.send(':x: Please provide a number on the position of the song that you wan\'t to remove!');
const songNum = parseInt(args[2]) - 1;
if (isNaN(songNum)) return message.channel.send(':x: You need to enter a __number__!');
if (parseInt(songNum) > client.global.db.playlists[message.guild.id].songs.size) return message.channel.send(`:x: There is only ${serverQueue.songs.size} amount of songs in the queue!`);
message.channel.send(`🗑️ removed \`${client.global.db.playlists[message.guild.id].songs[songNum].title}\` from the playlist!`);
return client.global.db.playlists[message.guild.id].songs.splice(songNum, 1);
} else return message.channel.send(':x: There is no playlist saved! Start by using the save option!');
}
};
-13
View File
@@ -1,13 +0,0 @@
module.exports = {
name: 'save',
async execute(message, args, client, prefix) {
const serverQueue = client.queue.get(message.guild.id);
if (!serverQueue) return message.channel.send(':x: There is nothing playing!');
client.global.db.playlists[message.guild.id] = {
songs: serverQueue.songs,
firstSong: serverQueue.songs[0],
saved: true,
};
message.channel.send(":white_check_mark: Queue saved!");
}
};
-39
View File
@@ -1,39 +0,0 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: 'queue',
description: 'Queue command.',
alias: 'q',
cooldown: 5,
async execute(message, args, client, prefix) {
const serverQueue = client.queue.get(message.guild.id);
if (!serverQueue) return message.channel.send(':x: There is nothing playing.');
if (args[1]) {
if (isNaN(args[1])) return msg.channel.send(':x: I\'m sorry, But you need to enter a valid __number__.');
}
let page = parseInt(args[1]);
if (!page) page = 1;
let pagetext = `:page_facing_up: Page: ${page} :page_facing_up:`
if (page === 1) pagetext = ':arrow_down: Next in queue :arrow_down:'
let queuesongs = serverQueue.songs.slice((page - 1) * 20 + 1, page * 20 + 1);
let queuemessage = `${queuesongs.map(song => `**#** ${song.title}`).join('\n')}`
const hashs = queuemessage.split('**#**').length;
for (let i = 0; i < hashs; i++) {
queuemessage = queuemessage.replace('**#**', `**${i + 1}**`);
}
if (!serverQueue.looping) {
const embed = new EmbedBuilder()
.setTitle("__Song queue__")
.setDescription(`**Now playing:** ${serverQueue.songs[0].title}🎶\n${pagetext}\n${queuemessage}`)
.setColor(client.config.embedColor)
return message.channel.send({ embeds: [embed] });
} else {
const embed = new EmbedBuilder()
.setTitle("__Song queue__")
.setDescription(`**Now playing:** ${serverQueue.songs[0].title}🎶\n${pagetext}\n${queuemessage}`)
.setFooter({ text: '🔁 Currently looping the queue!' })
.setColor(client.config.embedColor)
return message.channel.send({ embeds: [embed] });
}
}
};
-28
View File
@@ -1,28 +0,0 @@
const { PermissionFlagsBits } = require("discord.js");
module.exports = {
name: 'remove',
description: 'Remove command.',
alias: 'rm',
cooldown: 5,
execute(message, args, client, prefix) {
const voiceChannel = message.member.voice.channel;
const serverQueue = client.queue.get(message.guild.id);
const permissions = message.channel.permissionsFor(message.author);
if (!serverQueue) return message.channel.send(':x: There is nothing playing.');
if (!serverQueue.playing) return message.channel.send(':x: There is nothing playing');
if (!args[1]) return message.channel.send(':x: Please provide a song position in queue for me to remove!');
const pos = parseInt(args[1]);
if (isNaN(pos)) return message.channel.send(':x: You need to enter a number!');
if (pos === 0) return message.channel.send(':x: You can not remove the currently playing song!');
if (pos > serverQueue.songs.size) return message.channel.send(`:x: There is only ${serverQueue.songs.size} amount of songs in the queue!`);
if (voiceChannel !== serverQueue.voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in the same voice channel as Musix to remove songs!');
if (client.global.db.guilds[message.guild.id].dj) {
if (serverQueue.songs[pos].author !== message.author) {
if (!message.member.roles.cache.has(client.global.db.guilds[message.guild.id].djrole)) return message.channel.send(':x: You need the `DJ` role to remove songs queue by others!');
}
} else if (!permissions.has(PermissionFlagsBits.ManageMessages) && serverQueue.songs[pos].author !== message.author) return message.channel.send(':x: You need the `MANAGE_MESSAGES` permission to remove songs queued by others!');
message.channel.send(`🗑️ removed \`${serverQueue.songs[pos].title}\` from the queue!`);
return serverQueue.songs.splice(pos, 1);
}
};
-26
View File
@@ -1,26 +0,0 @@
const { PermissionFlagsBits } = require("discord.js");
module.exports = {
name: 'resume',
description: 'Resume command.',
alias: 'resume',
cooldown: 5,
execute(message, args, client, prefix) {
const serverQueue = client.queue.get(message.guild.id);
const permissions = message.channel.permissionsFor(message.author);
const voiceChannel = message.member.voice.channel;
if (!serverQueue) return message.channel.send(':x: There is nothing playing.');
if (serverQueue.playing && serverQueue.paused) {
if (voiceChannel !== serverQueue.voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in the same voice channel as Musix to loop the queue!');
if (client.global.db.guilds[message.guild.id].permissions === true) {
if (client.global.db.guilds[message.guild.id].dj) {
if (!message.member.roles.cache.has(client.global.db.guilds[message.guild.id].djrole)) return message.channel.send(':x: You need the `DJ` role to resume the music!');
} else if (!permissions.has(PermissionFlagsBits.ManageMessages)) return message.channel.send(':x: You need the `MANAGE_MESSAGES` permission to resume the music!');
}
serverQueue.paused = false;
serverQueue.audioPlayer.unpause();
return message.channel.send('▶ Resumed the music!');
}
return message.channel.send(':x: The music is not paused!');
}
};
-32
View File
@@ -1,32 +0,0 @@
const { PermissionFlagsBits } = require("discord.js");
module.exports = {
name: 'seek',
description: 'Seek music.',
alias: 'seek',
cooldown: 10,
async execute(message, args, client, prefix) {
const ytdl = require('ytdl-core');
const serverQueue = client.queue.get(message.guild.id);
const permissions = message.channel.permissionsFor(message.author);
const voiceChannel = message.member.voice.channel;
if (!serverQueue) return message.channel.send(':x: There is nothing playing.');
let data = await Promise.resolve(ytdl.getInfo(serverQueue.songs[0].url));
if (serverQueue.playing) {
if (voiceChannel !== serverQueue.voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in the same voice channel as Musix to seek the song!');
if (client.global.db.guilds[message.guild.id].permissions === true) {
if (client.global.db.guilds[message.guild.id].dj) {
if (!message.member.roles.cache.has(client.global.db.guilds[message.guild.id].djrole)) return message.channel.send(':x: You need the `DJ` role to seek the song!');
} else if (!permissions.has(PermissionFlagsBits.ManageMessages)) return message.channel.send(':x: You need the `MANAGE_MESSAGES` permission to seek the song!');
}
if (!args[1]) return message.channel.send(`:x: Correct usage: \`${prefix}seek <seeking point in seconds>\``);
const pos = parseInt(args[1])
if (isNaN(pos)) return message.channel.send(':x: I\'m sorry, But you need to enter a valid __number__.');
if (pos < 0) return message.channel.send(':x: The seeking point needs to be a positive number!');
if (pos > data.length_seconds) return message.channel.send(`:x: The lenght of this song is ${data.length_seconds} seconds! You can't seek further than that!`);
serverQueue.audioPlayer.stop();
client.funcs.play(message.guild, serverQueue.songs[0], client, message, pos, false);
} else {
message.channel.send(':x: There is nothing playing!');
}
}
};
-39
View File
@@ -1,39 +0,0 @@
const { EmbedBuilder, PermissionFlagsBits } = require("discord.js");
module.exports = {
name: 'settings',
usage: '[setting]',
description: 'Change the settings',
alias: 'settings',
cooldown: 10,
async execute(message, args, client, prefix) {
const embed = new EmbedBuilder()
.setTitle('Guild settings for Musix')
.addFields(
{ name: 'prefix', value: 'Change the guild specific prefix. (string)', inline: true},
{ name: 'volume', value: 'Change the default volume that the bot will start playing at. (number)', inline: true },
{ name: 'permissions', value: 'Change whether to require permissions to use eg `skip, stop, pause, loop, etc...`', inline: true },
{ name: 'setdj', value: 'Set a DJ role. This will allow chosen users to freely use all Musix commands. This will automatically set the `permissions` settings to true in order for the `DJ` role to have effect!', inline: true },
{ name: 'announcesongs', value: 'Whether to announce songs that start playing or not.' },
{ name: 'songselection', value: 'Will i ask to select a song from the top 10 queries or start playing the first result instantly.' }
)
.setFooter({ text: `how to use: ${prefix}settings <name> <value>` })
.setAuthor({ name: client.user.username, iconURL: client.user.avatarURL() })
.setColor(client.config.embedColor)
const permissions = message.channel.permissionsFor(message.author);
if (!permissions.has(PermissionFlagsBits.ManageGuild)) return message.channel.send(':x: You need the `MANAGE_SERVER` permission to change the settings!');
if (args[1]) {
const optionName = args[1].toLowerCase();
const option = client.settingCmd.get(optionName) || client.settingCmd.find(cmd => cmd.aliases && cmd.aliases.includes(optionName));
if (!option) return message.channel.send({ embeds: [embed] });
try {
option.execute(message, args, client, prefix);
} catch (error) {
message.reply(`:x: there was an error trying to execute that option!`);
console.log(error);
}
} else {
return message.channel.send({ embeds: [embed] });
}
},
};
-12
View File
@@ -1,12 +0,0 @@
module.exports = {
name: 'announcesongs',
async execute(message, args, client, prefix) {
if (client.global.db.guilds[message.guild.id].startPlaying) {
client.global.db.guilds[message.guild.id].startPlaying = false;
return message.channel.send(':white_check_mark: announcesongs now set to `false`!');
} else {
client.global.db.guilds[message.guild.id].startPlaying = true;
return message.channel.send(':white_check_mark: announcesongs now set to `true`!');
}
}
};
-17
View File
@@ -1,17 +0,0 @@
module.exports = {
name: 'permissions',
async execute(message, args, client, prefix) {
if (!args[2]) return message.channel.send(`🔒 Permission requirement: \`${client.global.db.guilds[message.guild.id].permissions}\``);
if (args[2] === 'true') {
if (!client.global.db.guilds[message.guild.id].permissions) {
client.global.db.guilds[message.guild.id].permissions = true;
message.channel.send(`:white_check_mark: Permissions requirement now set to: \`true\``);
} else return message.channel.send(':x: That value is already `true`!');
} else if (args[2] === 'false') {
if (client.global.db.guilds[message.guild.id].permissions) {
client.global.db.guilds[message.guild.id].permissions = false;
message.channel.send(`:white_check_mark: Permissions requirement now set to: \`false\``);
} else return message.channel.send(':x: That value is already `false`!');
} else return message.channel.send(':x: Please define a boolean! (true/false)');
}
};
-8
View File
@@ -1,8 +0,0 @@
module.exports = {
name: 'prefix',
async execute(message, args, client, prefix) {
if (!args[2]) return message.channel.send(`Current prefix: \`${client.global.db.guilds[message.guild.id].prefix}\``);
client.global.db.guilds[message.guild.id].prefix = args[2];
message.channel.send(`:white_check_mark: New prefix set to: \`${args[2]}\``);
}
};
-14
View File
@@ -1,14 +0,0 @@
module.exports = {
name: 'reset',
async execute(message, args, client, prefix) {
client.global.db.guilds[message.guild.id] = {
prefix: client.config.prefix,
defaultVolume: 5,
permissions: false,
premium: false,
dj: false,
djrole: null
};
message.channel.send(':white_check_mark: Reset __all__ guild settings!');
}
};
-28
View File
@@ -1,28 +0,0 @@
const { PermissionFlagsBits } = require("discord.js");
module.exports = {
name: 'setdj',
async execute(message, args, client, prefix) {
if (!client.global.db.guilds[message.guild.id].dj) {
if (!client.global.db.guilds[message.guild.id].permissions) {
client.global.db.guilds[message.guild.id].permissions = true;
}
if (message.guild.roles.cache.find(x => x.name === "DJ")) {
client.global.db.guilds[message.guild.id].djrole = message.guild.roles.cache.find(x => x.name === "DJ").id;
message.channel.send(':white_check_mark: I found a `DJ` role from this guild! This role is now the DJ role.');
client.global.db.guilds[message.guild.id].dj = true;
} else {
const permissions = message.channel.permissionsFor(message.client.user);
if (!permissions.has(PermissionFlagsBits.ManageRoles)) return message.channel.send(':x: I cannot create roles (Manage roles), make sure I have the proper permissions! I will need this permission to create a `DJ` role since i did not find one!');
message.guild.createRole({ name: 'DJ' })
.then(role => client.global.db.guilds[message.guild.id].djrole = role.id)
.catch(console.error)
client.global.db.guilds[message.guild.id].dj = true;
message.channel.send(':white_check_mark: I did not find a role `DJ` so i have created one for you!');
}
} else {
client.global.db.guilds[message.guild.id].dj = false;
message.channel.send(':white_check_mark: `DJ` now set to `false`');
}
}
};
-34
View File
@@ -1,34 +0,0 @@
module.exports = {
name: 'setpremium',
async execute(message, args, client, prefix) {
//if (message.author.id !== client.config.devId) return;
if (args[2]) {
const guild = client.guilds.get(args[2]);
if (!client.global.db.guilds[guild.id].premium) {
client.global.db.playlists[guild.id] = {
songs: [],
firstSong: undefined,
saved: false,
};
client.global.db.guilds[guild.id].premium = true;
message.channel.send(`:white_check_mark: Guild ${guild.name} | ${guild.id} is now premium! :tada:`)
} else {
client.global.db.guilds[guild.id].premium = false;
message.channel.send(`:white_check_mark: Guild ${guild.name} | ${guild.id} is no longer premium!`)
}
} else {
if (!client.global.db.guilds[message.guild.id].premium) {
client.global.db.playlists[message.guild.id] = {
songs: [],
firstSong: undefined,
saved: false,
};
client.global.db.guilds[message.guild.id].premium = true;
message.channel.send(':white_check_mark: This guild is now premium! :tada:')
} else {
client.global.db.guilds[message.guild.id].premium = false;
message.channel.send(":white_check_mark: This guild is no longer premium!")
}
}
}
};
-12
View File
@@ -1,12 +0,0 @@
module.exports = {
name: 'songselection',
async execute(message, args, client, prefix) {
if (!client.global.db.guilds[message.guild.id].songSelection) {
message.channel.send(':white_check_mark: Songselection now set to `true`!');
client.global.db.guilds[message.guild.id].songSelection = true;
} else {
client.global.db.guilds[message.guild.id].songSelection = false;
message.channel.send(':white_check_mark: Songselection now set to `false`');
}
}
};
-10
View File
@@ -1,10 +0,0 @@
module.exports = {
name: 'volume',
async execute(message, args, client, prefix) {
if (!args[2]) return message.channel.send(`:speaker: Current default volume is: \`${client.global.db.guilds[message.guild.id].defaultVolume}\``);
if (isNaN(args[2])) return message.channel.send(':x: I\'m sorry, But the default volume needs to be a valid __number__.');
if (args[2].length > 2) return message.channel.send(':x: The default volume must be below `100` for quality and safety resons.');
client.global.db.guilds[message.guild.id].defaultVolume = args[2];
message.channel.send(`:white_check_mark: Default volume set to: \`${args[2]}\``);
}
};
-21
View File
@@ -1,21 +0,0 @@
module.exports = {
name: 'Shuffle',
description: 'Shuffle command.',
alias: 'shuffle',
cooldown: 5,
execute(message, args, client, prefix) {
const serverQueue = client.queue.get(message.guild.id);
let currentIndex = serverQueue.songs.length,
temporaryValue,
randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = serverQueue.songs[currentIndex];
serverQueue.songs[currentIndex] = serverQueue.songs[randomIndex];
serverQueue.songs[randomIndex] = temporaryValue;
}
}
};
-46
View File
@@ -1,46 +0,0 @@
const { PermissionFlagsBits } = require("discord.js");
module.exports = {
name: 'skip',
description: 'Skip command.',
alias: 's',
cooldown: 5,
execute(message, args, client, prefix) {
const voiceChannel = message.member.voice.channel;
const serverQueue = client.queue.get(message.guild.id);
const permissions = message.channel.permissionsFor(message.author);
if (!serverQueue) return message.channel.send(':x: There is nothing playing that I could skip for you.');
if (!serverQueue.playing) return message.channel.send(':x: There is nothing playing that I could skip for you.');
if (voiceChannel !== serverQueue.voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in the same voice channel as Musix to skip the song!');
if (client.global.db.guilds[message.guild.id].permissions === true) {
if (!message.member.roles.cache.has(client.global.db.guilds[message.guild.id].djrole) && !permissions.has(PermissionFlagsBits.ManageMessages)) {
return vote(serverQueue, message, client);
} else {
return skipSong(serverQueue, message);
}
} else {
return vote(serverQueue, message, client);
}
}
};
function skipSong(serverQueue, message) {
message.channel.send(':fast_forward: Skipped the song!');
serverQueue.audioPlayer.stop();
};
function vote(serverQueue, message) {
serverQueue.votesNeeded = Math.floor(serverQueue.voiceChannel.members.size / 2);
serverQueue.votesNeeded.toFixed();
if (serverQueue.voiceChannel.members.size > 2) {
if (serverQueue.voters.includes(message.member.id)) return message.channel.send(':x: You have already voted to skip!');
serverQueue.votes++;
serverQueue.voters.push(message.member.id);
if (serverQueue.votes >= serverQueue.votesNeeded) {
serverQueue.voters = [];
serverQueue.votes = 0;
serverQueue.votesNeeded = null;
return skipSong(serverQueue, message);
} else return message.channel.send(`:x: Not enough votes! ${serverQueue.votes} / ${serverQueue.votesNeeded}!`);
} else {
return skipSong(serverQueue, message);
}
};
-25
View File
@@ -1,25 +0,0 @@
const { EmbedBuilder } = require("discord.js");
const { getVoiceConnections } = require("@discordjs/voice");
module.exports = {
name: 'status',
description: 'Status command.',
alias: 'status',
cooldown: 5,
async execute(message, args, client, prefix) {
const uptime = client.funcs.msToTime(client.uptime);
const ping = Math.floor(client.ws.ping * 10) / 10;
const embed = new EmbedBuilder()
.setTitle(`Status for ${client.user.username}`)
.addFields(
{ name: ':signal_strength: Ping', value: ping + ' ms', inline: true },
{ name: ':stopwatch: Uptime', value: uptime, inline: true },
{ name: ':play_pause: Currently playing music on', value: `${getVoiceConnections.size ?? 0} guild(s)`, inline: true },
{ name: ':cd: Operating system', value: process.platform, inline: true }
)
.setAuthor({ name: client.user.username, iconURL: client.user.avatarURL()})
.setColor(client.config.embedColor)
return message.channel.send({ embeds: [embed] });
}
};
-25
View File
@@ -1,25 +0,0 @@
const { PermissionFlagsBits } = require("discord.js");
module.exports = {
name: 'stop',
description: 'Stop command.',
alias: 'stop',
cooldown: 5,
execute(message, args, client, prefix) {
const voiceChannel = message.member.voice.channel;
const serverQueue = client.queue.get(message.guild.id);
const permissions = message.channel.permissionsFor(message.author);
if (!serverQueue) return message.channel.send(':x: There is nothing playing that I could stop for you.');
if (!serverQueue.playing) return message.channel.send(':x: There is nothing playing that I could stop for you.');
if (voiceChannel !== serverQueue.voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in the same voice channel as Musix to stop the music!');
if (client.global.db.guilds[message.guild.id].permissions === true) {
if (client.global.db.guilds[message.guild.id].dj) {
if (!message.member.roles.cache.has(client.global.db.guilds[message.guild.id].djrole)) return message.channel.send(':x: You need the `DJ` role to stop the music!');
} else if (!permissions.has(PermissionFlagsBits.ManageChannels)) return message.channel.send(':x: You need the `MANAGE_CHANNELS` permission to stop the music!');
}
serverQueue.songs = [];
serverQueue.looping = false;
serverQueue.audioPlayer.stop();
message.channel.send(':stop_button: Stopped the music!')
}
};
-29
View File
@@ -1,29 +0,0 @@
const { PermissionFlagsBits } = require("discord.js");
module.exports = {
name: 'volume',
description: 'Volume command.',
alias: 'volume',
cooldown: 5,
execute(message, args, client, Discord, prefix) {
const voiceChannel = message.member.voice.channel;
const serverQueue = client.queue.get(message.guild.id);
const permissions = message.channel.permissionsFor(message.author);
if (!serverQueue) return message.channel.send(':x: There is nothing playing.');
if (!serverQueue.playing) return message.channel.send(':x: There is nothing playing.');
if (!args[1]) return message.channel.send(`:loud_sound: The current volume is: **${serverQueue.volume}**`);
const volume = parseFloat(args[1]);
if (!voiceChannel) return message.channel.send(':x: I\'m sorry but you need to be in a voice channel to change the volume!');
if (client.global.db.guilds[message.guild.id].permissions === true) {
if (client.global.db.guilds[message.guild.id].dj) {
if (!message.member.roles.cache.has(client.global.db.guilds[message.guild.id].djrole)) return message.channel.send(':x: You need the `DJ` role to change the volume!');
} else if (!permissions.has(PermissionFlagsBits.ManageChannels)) return message.channel.send(':x: You need the `MANAGE_CHANNELS` permission to change the volume!');
}
if (isNaN(volume)) return message.channel.send(':x: I\'m sorry, But you need to enter a valid __number__.');
if (volume > 100) return message.channel.send(':x: The max volume is `100`!');
if (volume < 0) return message.channel.send(':x: The volume needs to be a positive number!');
serverQueue.volume = volume;
serverQueue.audioResource.volume.setVolume(volume / 100);
return message.channel.send(`:loud_sound: I set the volume to: **${volume}**`);
}
};
-10
View File
@@ -1,10 +0,0 @@
module.exports = {
discord_api_token: process.env.DISCORD_API_TOKEN,
firebase: {
serviceAccount: null
//serviceAccount: require('./serviceAccount.json')
},
youtube_api_key: process.env.YOUTUBE_API_KEY,
prefix: process.env.BOT_PREFIX ?? "mx>",
embedColor: "#b50002"
}
-25
View File
@@ -1,25 +0,0 @@
module.exports = {
name: 'guildcreate',
async execute(client, guild) {
if(client.config.firebase.serviceAccount){
client.db.collection('guilds').doc(guild.id).set({
prefix: client.config.prefix,
defaultVolume: 50,
permissions: false,
premium: false,
dj: false,
djrole: null,
startPlaying: true
});
client.global.db.guilds[guild.id] = {
prefix: client.config.prefix,
defaultVolume: 50,
permissions: false,
premium: false,
dj: false,
djrole: null,
startPlaying: true
};
}
}
}
-24
View File
@@ -1,24 +0,0 @@
module.exports = {
name: 'message',
async execute(client, message) {
if (message.author.bot || !message.guild) return;
let prefix = client.global.db.guilds[message.guild.id].prefix;
const args = message.content.slice(prefix.length).split(' ');
if (message.mentions.users.first()) {
if (message.mentions.users.first().id === client.user.id) {
if (!args[1]) return;
if (args[1] === 'prefix') return message.channel.send(`My prefix here is: \`${prefix}\`.`);
if (args[1] === 'help') {
const command = client.commands.get("help");
return client.funcs.exe(message, args, client, prefix, command);
}
}
}
if (!message.content.startsWith(prefix)) return;
if (!args[0]) return;
const commandName = args[0].toLowerCase();
const command = client.commands.get(commandName) || client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName)) || client.commandAliases.get(commandName);
if (!command && message.content !== `${prefix}`) return;
client.funcs.exe(message, args, client, prefix, command);
}
}
-53
View File
@@ -1,53 +0,0 @@
module.exports = {
name: 'ready',
async execute(client) {
client.user.setActivity(`@${client.user.username} help | 🎶`, { type: 'LISTENING' });
client.user.setStatus('online');
console.log('- Activated -');
client.guilds.cache.forEach(guild => {
client.global.db.guilds[guild.id] = {
prefix: client.config.prefix,
defaultVolume: 50,
permissions: false,
premium: false,
dj: false,
djrole: null,
startPlaying: true
};
});
if(client.config.firebase.serviceAccount){
const remoteMusixGuildsData = await client.funcs.dbget('guilds', null, client);
const remoteMusixPlaylistsData = await client.funcs.dbget('playlists', null, client);
remoteMusixGuildsData.forEach(guildData => {
client.global.db.guilds[guildData.id] = guildData.d;
});
remoteMusixPlaylistsData.forEach(guildData => {
client.global.db.playlists[guildData.id] = guildData.d;
});
console.log('- DB Set -');
setInterval(async () => {
client.guilds.cache.forEach(guild => {
client.db.collection('guilds').doc(guild.id).set({
prefix: client.global.db.guilds[guild.id].prefix,
defaultVolume: client.global.db.guilds[guild.id].defaultVolume,
permissions: client.global.db.guilds[guild.id].permissions,
premium: client.global.db.guilds[guild.id].premium,
dj: client.global.db.guilds[guild.id].dj,
djrole: client.global.db.guilds[guild.id].djrole,
startPlaying: client.global.db.guilds[guild.id].startPlaying
});
if (client.global.db.guilds[guild.id].premium) {
client.db.collection('playlists').doc(guild.id).set({
songs: client.global.db.playlists[guild.id].songs,
saved: client.global.db.playlists[guild.id].saved,
});
}
});
}, 1800000);
}
}
}
-22
View File
@@ -1,22 +0,0 @@
module.exports = async function (collection, doc, client) {
if (doc) {
let d = await client.db.collection(collection).doc(doc).get().catch(err => {
console.log('Error getting document', err);
return 'error';
});
return d.data();
} else {
let d = await client.db.collection(collection).get().catch(err => {
console.log('Error getting document', err);
return 'error';
});
let finalD = [];
d.forEach(doc => {
finalD.push({
id: doc.id,
d: doc.data(),
});
});
return finalD;
}
};
-13
View File
@@ -1,13 +0,0 @@
const { EmbedBuilder, PermissionFlagsBits } = require("discord.js");
module.exports = function (message, args, client, prefix, command) {
const permissions = message.channel.permissionsFor(message.client.user);
if (!permissions.has(PermissionFlagsBits.EmbedLinks)) return message.channel.send(':x: I cannot send embeds (Embed links), make sure I have the proper permissions!');
try {
command.uses++;
command.execute(message, args, client, prefix);
} catch (error) {
message.reply(`:x: there was an error trying to execute that command!`);
console.log(error);
}
};
-53
View File
@@ -1,53 +0,0 @@
const { createAudioPlayer, getVoiceConnection, joinVoiceChannel, NoSubscriberBehavior } = require("@discordjs/voice");
module.exports = async function (video, message, voiceChannel, client, playlist = false) {
let song = {
id: video.id,
title: he.decode(video.title),
url: `https://www.youtube.com/watch?v=${video.id}`,
author: message.author
}
const serverQueue = client.queue.get(message.guild.id);
if (!serverQueue) {
const construct = {
textChannel: message.channel,
voiceChannel: voiceChannel,
connection: null,
audioPlayer: createAudioPlayer({
behaviors: {
noSubscriber: NoSubscriberBehavior.Play,
}
}),
songs: [],
volume: client.global.db.guilds[message.guild.id].defaultVolume,
playing: false,
paused: false,
looping: false,
votes: 0,
voters: [],
votesNeeded: null
};
construct.songs.push(song);
client.queue.set(message.guild.id, construct);
try {
const connection =
getVoiceConnection(voiceChannel.guild.id) ??
joinVoiceChannel({
channelId: voiceChannel.id,
guildId: voiceChannel.guild.id,
adapterCreator: voiceChannel.guild.voiceAdapterCreator
});
construct.connection = connection;
client.funcs.play(message.guild, construct.songs[0], client, message, 0, true);
} catch (error) {
client.queue.delete(message.guild.id);
console.log("Error with connecting to voice channel: " + error);
return message.channel.send(`:x: An error occured: ${error}`);
}
} else {
serverQueue.songs.push(song);
if (playlist) return undefined;
return message.channel.send(`:white_check_mark: **${song.title}** has been added to the queue!`);
}
return undefined;
}
-11
View File
@@ -1,11 +0,0 @@
module.exports = function msToTime(duration) {
var seconds = Math.floor((duration / 1000) % 60),
minutes = Math.floor((duration / (1000 * 60)) % 60),
hours = Math.floor((duration / (1000 * 60 * 60)) % 24);
hours = (hours < 10) ? "0" + hours : hours;
minutes = (minutes < 10) ? "0" + minutes : minutes;
seconds = (seconds < 10) ? "0" + seconds : seconds;
return `${hours}:${minutes}:${seconds}`;
}
-48
View File
@@ -1,48 +0,0 @@
const { EmbedBuilder } = require('discord.js');
const { AudioPlayerStatus, createAudioResource } = require('@discordjs/voice');
const ytdl = require('ytdl-core');
module.exports = async function (guild, song, client, message, seek, play) {
const serverQueue = client.queue.get(guild.id);
if (!song) {
serverQueue.connection.destroy();
client.queue.delete(guild.id);
return;
}
serverQueue.audioPlayer
.on(AudioPlayerStatus.Idle, () => {
serverQueue.playing = false;
serverQueue.audioPlayer.removeAllListeners();
if (serverQueue.looping) {
serverQueue.songs.push(serverQueue.songs[0]);
}
serverQueue.songs.shift();
client.funcs.play(guild, serverQueue.songs[0], client, message);
})
.on('error', (error) => {
console.error(error)
});
const audioResource = createAudioResource(ytdl(song.url, { filter: "audio", highWaterMark: 1 << 25 }),{
inlineVolume: true
});
audioResource.volume.setVolume(serverQueue.volume / 100);
serverQueue.audioPlayer.play(audioResource);
serverQueue.audioResource = audioResource;
serverQueue.connection.subscribe(serverQueue.audioPlayer);
/*.playStream(ytdl(song.url, { filter: "audio", highWaterMark: 1 << 25 }), { seek: seek, bitrate: 1024, passes: 10, volume: 1 })*/
if (client.global.db.guilds[guild.id].startPlaying || play) {
let data = await Promise.resolve(ytdl.getInfo(serverQueue.songs[0].url));
let songtime = (data.length_seconds * 1000).toFixed(0);
const embed = new EmbedBuilder()
.setTitle(`:musical_note: Start playing: **${song.title}**`)
.setDescription(`Song duration: \`${client.funcs.msToTime(songtime)}\``)
.setColor("#b50002")
serverQueue.textChannel.send({ embeds: [embed] });
}
serverQueue.playing = true;
}
+24 -43
View File
@@ -1,50 +1,31 @@
const Discord = require('discord.js');
const MusicClient = require('./Client');
const client = new MusicClient({});
const fs = require('fs');
const { ShardingManager} = require("discord.js");
const config = require("./src/config/config.js");
const DiscordWebhook = require("discord-webhook-node");
const commandFiles = fs.readdirSync('./commands/').filter(f => f.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
command.uses = 0;
client.commands.set(command.name, command);
client.commandAliases.set(command.alias, command);
if (config.devMode) {
console.log("- dev mode- ");
config.shards = 1;
}
const eventFiles = fs.readdirSync('./events/').filter(f => f.endsWith('.js'));
for (const file of eventFiles) {
const event = require(`./events/${file}`);
client.events.set(event.name, event);
}
const playlistFiles = fs.readdirSync('./commands/playlist/').filter(f => f.endsWith('.js'));
for (const file of playlistFiles) {
const option = require(`./commands/playlist/${file}`);
client.playlistCmd.set(option.name, option);
}
const settingFiles = fs.readdirSync('./commands/settings/').filter(f => f.endsWith('.js'));
for (const file of settingFiles) {
const option = require(`./commands/settings/${file}`);
client.settingCmd.set(option.name, option);
}
client.on('ready', async () => {
const eventName = 'ready';
const event = client.events.get(eventName) || client.events.find(ent => ent.aliases && ent.aliases.includes(eventName));
event.execute(client);
const manager = new ShardingManager("./src/bot.js", {
token: config.token,
respawn: config.respawn,
totalShards: config.shards,
});
client.on('messageCreate', message => {
const eventName = 'message';
const event = client.events.get(eventName) || client.events.find(ent => ent.aliases && ent.aliases.includes(eventName));
event.execute(client, message);
});
console.log("- Launching shards -");
manager.spawn(config.shards, config.shardDelay, config.shardTimeout);
manager.on("shardCreate", (shard) =>
console.log(`- Launched shard ${shard.id} -`)
);
client.on('guildCreate', async (guild) => {
const eventName = 'guildcreate';
const event = client.events.get(eventName) || client.events.find(ent => ent.aliases && ent.aliases.includes(eventName));
event.execute(client, guild);
});
const oldConsole = {};
oldConsole.log = console.log;
console.log = function (arg) {
oldConsole.log(arg);
};
client.login(client.config.discord_api_token).catch(err => { console.log('- Failed To Login -> ' + err); });
oldConsole.error = console.error;
console.error = function (arg) {
oldConsole.error(arg);
};
+716 -1336
View File
File diff suppressed because it is too large Load Diff
+22 -17
View File
@@ -1,34 +1,39 @@
{
"name": "musix-oss",
"version": "2.22.0",
"description": "",
"main": "index.js",
"version": "3.11.0",
"description": "V3 for Musix the discord music bot",
"main": "./index.js",
"scripts": {
"start": "node index.js",
"start": "node --max-old-space-size=3072 index.js",
"start:dev": "nodemon"
},
"keywords": [],
"author": "Musix Org",
"license": "MIT",
"homepage": "https://https://github.com/musix-oss/musix",
"repository": {
"type": "git",
"url": "https://https://github.com/musix-oss/musix"
"url": "git+https://github.com/musix-org/musix-oss.git"
},
"author": "Musix Org",
"license": "MIT",
"bugs": {
"url": "https://github.com/musix-org/musix-oss/issues",
"support": "https://discord.gg/rvHuJtB"
},
"homepage": "https://musix-org.github.io/",
"dependencies": {
"discord.js": "^14.26.3",
"@discordjs/voice": "^0.19.2",
"@discordjs/opus": "^0.10.0",
"dotenv": "^17.4.2",
"firebase": "^12.12.1",
"firebase-admin": "^13.8.0",
"discord-webhook-node": "^1.1.8",
"discord.js": "^14.22.1",
"dotenv": "^17.2.2",
"firebase": "^12.3.0",
"firebase-admin": "^13.5.0",
"he": "^1.2.0",
"ms": "^2.1.3",
"prism-media": "^1.3.5",
"request": "^2.88.2",
"simple-youtube-api": "^5.2.1",
"ytdl-core": "^4.11.5"
"spotify-web-api-node": "^5.0.2",
"ytdl-core": "^4.11.5",
"ytsr": "^3.8.4"
},
"devDependencies": {
"nodemon": "^3.1.14"
"nodemon": "^3.1.10"
}
}
+14
View File
@@ -0,0 +1,14 @@
const MusicClient = require("./client.js");
const DiscordWebhook = require("discord-webhook-node");
const client = new MusicClient({});
const oldConsole = {};
oldConsole.log = console.log;
console.log = function (arg) {
oldConsole.log(arg);
};
oldConsole.error = console.error;
console.error = function (arg) {
oldConsole.error(arg);
};
+82
View File
@@ -0,0 +1,82 @@
const {
Client,
Collection,
Intents
} = require("discord.js");
const admin = require("firebase-admin");
const serviceAccount = require("./config/serviceAccount.json");
const fs = require("fs");
const path = require("path");
const SpotifyApi = require("spotify-web-api-node");
const YouTube = require("simple-youtube-api");
const config = require("./config/config");
const GatewayIntents = new Intents();
GatewayIntents.add(
1 << 0, // GUILDS
1 << 7, // GUILD_VOICE_STATES
1 << 9, // GUILD_MESSAGES,
1 << 15 // MESSAGE_CONTENT
);
module.exports = class extends Client {
constructor() {
super({
disableMentions: "everyone",
disabledEvents: ["TYPING_START"],
ws: {
intents: GatewayIntents
}
});
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
});
this.commands = new Collection();
this.settingCmd = new Collection();
this.queue = new Map();
this.spotify = new SpotifyApi({
id: config.spotify_client_id,
secret: config.spotify_client_secret,
});
this.youtube = new YouTube(config.youtube_api_key);
this.config = config;
this.funcs = {};
this.dispatcher = {};
this.messages = require("./config/messages.js");
this.db = admin.firestore();
this.db.FieldValue = require("firebase-admin").firestore.FieldValue;
this.global = {
db: {
guilds: {},
}
};
this.logs = [];
fs.readdirSync(path.join(__dirname, "funcs")).forEach((filename) => {
this.funcs[filename.slice(0, -3)] = require(`./funcs/${filename}`);
});
const commandFiles = fs
.readdirSync(path.join(path.dirname(__dirname), "commands"))
.filter((f) => f.endsWith(".js"));
for (const file of commandFiles) {
const command = require(`../commands/${file}`);
command.uses = 0;
this.commands.set(command.name, command);
}
const settingFiles = fs
.readdirSync(path.join(path.dirname(__dirname), "commands/settings"))
.filter((f) => f.endsWith(".js"));
for (const file of settingFiles) {
const option = require(`../commands/settings/${file}`);
this.settingCmd.set(option.name, option);
}
require("./events/clientEvents/handler.js")(this);
this.login(this.config.discord_api_token).catch((err) =>
console.log("Failed to login: " + err)
);
}
};
+33
View File
@@ -0,0 +1,33 @@
module.exports = {
name: "bass",
description: "Boost the bass in your music!",
alias: ["none"],
usage: "<bass>",
permission: "MANAGE_MESSAGES",
category: "audio modifiers",
execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (!args[1] && queue)
return msg.channel.send(
`${client.messages.currentBass}**${queue.bass}**`
);
const bass = parseFloat(args[1]);
if (client.funcs.check(client, msg, command)) {
if (queue.nightCore)
return msg.channel.send(client.messages.disableNightCore);
if (isNaN(bass)) return msg.channel.send(client.messages.validNumber);
if (bass > 10) return msg.channel.send(client.messages.maxBass);
if (bass < 0) return msg.channel.send(client.messages.positiveBass);
queue.bass = bass;
client.funcs.end(
client,
msg,
(queue.connection.dispatcher.streamTime + queue.time) / 1000,
command
);
let message;
message = client.messages.bassApplied.replace("%BASS%", bass);
return msg.channel.send(message);
}
},
};
+39
View File
@@ -0,0 +1,39 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: 'help',
alias: ["h"],
usage: '<command(opt)>',
description: 'See the help for Musix.',
permission: 'none',
category: 'info',
execute(msg, args, client, command) {
if (args[1]) {
if (!client.commands.has(args[1]) || (client.commands.has(args[1]) && client.commands.get(args[1]).omitFromHelp === true && msg.guild.id !== '489083836240494593')) return msg.channel.send('That command does not exist');
const command = client.commands.get(args[1]);
const embed = new EmbedBuilder()
.setTitle(`${client.global.db.guilds[msg.guild.id].prefix}${command.name} ${command.usage}`)
.setDescription(command.description)
.setFooter({ text:`${client.messages.helpCmdFooter} \`${command.alias.map(a => `${a}, `)}\`` })
.setColor(client.config.embedColor)
msg.channel.send(embed);
} else {
const categories = [];
for (let i = 0; i < client.commands.size; i++) {
if (!categories.includes(client.commands.array()[i].category)) categories.push(client.commands.array()[i].category);
}
let commands = '';
for (let i = 0; i < categories.length; i++) {
commands += `**» ${categories[i].toUpperCase()}**\n${client.commands.filter(x => x.category === categories[i] && !x.omitFromHelp).map(x => `\`${x.name}\``).join(', ')}\n`;
}
let message;
message = client.messages.helpFooter.replace("%PREFIX%", client.global.db.guilds[msg.guild.id].prefix);
const embed = new EmbedBuilder()
.setTitle(`${client.user.username} ${client.messages.helpTitle}`)
.setDescription(commands)
.setFooter({ text: message })
.setColor(client.config.embedColor)
msg.channel.send(embed);
}
}
};
+17
View File
@@ -0,0 +1,17 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: 'invite',
alias: ["i"],
usage: '',
description: 'Invite Musix.',
permission: 'none',
category: 'info',
execute(msg, args, client, command) {
const embed = new EmbedBuilder()
.setTitle(client.messages.inviteTitle)
.setURL(client.config.invite)
.setColor(client.config.embedColor)
msg.channel.send(embed);
}
};
+20
View File
@@ -0,0 +1,20 @@
module.exports = {
name: 'loop',
alias: [],
usage: '',
description: 'loop the queue.',
permission: 'MANAGE_MESSAGES',
category: 'music control',
async execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (client.funcs.check(client, msg, command)) {
if (!queue.looping) {
queue.looping = true;
msg.channel.send(client.messages.looping);
} else {
queue.looping = false;
msg.channel.send(client.messages.noLooping);
}
}
}
};
+22
View File
@@ -0,0 +1,22 @@
module.exports = {
name: 'loopsong',
alias: ["none"],
usage: '',
description: 'loop the currently playing song.',
permission: 'MANAGE_MESSAGES',
category: 'music control',
async execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (client.funcs.check(client, msg, command)) {
if (!queue.songLooping) {
queue.songLooping = true;
let message;
message = client.messages.loopingSong.replace("%TITLE%", queue.songs[0].title);
msg.channel.send(message);
} else {
queue.songLooping = false;
msg.channel.send(client.messages.noLoopingSong);
}
}
}
};
+37
View File
@@ -0,0 +1,37 @@
const { EmbedBuilder } = require("discord.js");
const { getLyrics } = require("genius-lyrics-api");
module.exports = {
name: "lyrics",
alias: ["l"],
usage: "<song>",
description: "see the lyrics for a song",
permission: "none",
category: "util",
async execute(msg, args, client, prefix, command) {
const searchString = args.slice(1).join(" ");
const options = {
apiKey: client.config.genius_api_key,
title: searchString,
artist: "",
optimizeQuery: true,
};
const queue = client.queue.get(msg.guild.id);
if (queue && !args[1]) options.title = queue.songs[0].title;
if (!queue && !args[1])
return msg.channel.send(client.messages.lyricsUsage);
getLyrics(options).then((lyrics) => {
if (lyrics === null)
return msg.channel.send(client.messages.noResultsLyrics);
for (let i = 0; i < lyrics.length; i += 2000) {
let toi = "";
toi = lyrics.substring(i, Math.min(lyrics.length, i + 2000));
const embed = new EmbedBuilder()
.setTitle(client.messages.lyricsTitle)
.setDescription(toi)
.setColor(client.config.embedColor);
msg.channel.send(embed);
}
});
},
};
+25
View File
@@ -0,0 +1,25 @@
module.exports = {
name: "nightcore",
alias: ["nc"],
usage: "<true/false>",
description: "Change nightcore audio modifier on/off",
permission: "MANAGE_MESSAGES",
category: "audio modifiers",
async execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (!args[1] && queue)
return msg.channel.send(
`${client.messages.currentNightCore}**${queue.nightCore}**`
);
if (client.funcs.check(client, msg, command)) {
if (args[1] === "true") {
queue.nightCore = true;
} else if (args[1] === "false") {
queue.nightCore = false;
} else return msg.channel.send(client.messages.boolean);
let message;
message = client.messages.nightCoreApplied.replace("%BOOLEAN%", args[1]);
return msg.channel.send(message);
}
},
};
+48
View File
@@ -0,0 +1,48 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: "nowplaying",
alias: ["np", "playing"],
usage: "",
description: "See the currently playing song position and length.",
permission: "none",
category: "info",
async execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (!queue || !queue.songs[0] || !queue.connection || !queue.connection.dispatcher) return msg.channel.send(client.messages.noServerQueue);
let songTime = (queue.songs[0].info.lengthSeconds * 1000).toFixed(0);
let completed = (
queue.connection.dispatcher.streamTime + queue.time
).toFixed(0);
let barlength = 30;
let completedpercent = ((completed / songTime) * barlength).toFixed(0);
let array = [];
for (let i = 0; i < completedpercent - 1; i++) {
array.push("⎯");
}
array.push("🔘");
for (let i = 0; i < barlength - completedpercent - 1; i++) {
array.push("⎯");
}
const thumbnail = queue.songs[0].info.thumbnail.thumbnails[4] || queue.songs[0].info.thumbnail.thumbnails[3] || queue.songs[0].info.thumbnail.thumbnails[2] || queue.songs[0].info.thumbnail.thumbnails[1] || queue.songs[0].info.thumbnail.thumbnails[0];
const embed = new EmbedBuilder()
.setTitle(client.messages.nowPlaying)
.setDescription(
`${client.messages.nowPlayingDesc} ${
queue.songs[0].title
}\n\`${array.join("")}\`\n\`${client.funcs.msToTime(
completed,
"hh:mm:ss"
)} / ${client.funcs.msToTime(songTime, "hh:mm:ss")}\`\nchannel: \`${queue.songs[0].info.author.name}\``
)
.setFooter({ text: `Queued by ${queue.songs[0].author.tag}`})
.setURL(queue.songs[0].url)
.setThumbnail(thumbnail.url)
.setColor(client.config.embedColor);
if (queue.nightCore)
embed.setDescription(
`${client.messages.nowPlayingDesc} ${queue.songs[0].title} \nchannel: \`${queue.songs[0].info.author.name}\``
);
return msg.channel.send(embed);
},
};
+17
View File
@@ -0,0 +1,17 @@
module.exports = {
name: 'pause',
alias: ["none"],
usage: '',
description: 'Pause the currently playing music.',
permission: 'MANAGE_MESSAGES',
category: 'music control',
execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (client.funcs.check(client, msg, command)) {
if (queue.paused) return msg.channel.send(client.messages.alreadyPaused);
queue.paused = true;
queue.connection.dispatcher.pause(true);
return msg.channel.send(client.messages.paused);
}
}
};
+401
View File
@@ -0,0 +1,401 @@
const ytdl = require("ytdl-core");
const ytsr = require("ytsr");
module.exports = {
name: "play",
alias: ["p", "music"],
usage: "<song name>",
description: "Play some music.",
permission: "none",
category: "play",
async execute(msg, args, client, command) {
const searchString = args.slice(1).join(" ");
const url = args[1] ? args[1].replace(/<(.+)>/g, "$1") : "";
const queue = client.queue.get(msg.guild.id);
const voiceChannel = msg.member.voice.channel;
if (
client.global.db.guilds[msg.guild.id].blacklist.includes(
msg.member.voice.channelID
)
)
return msg.channel.send(client.messages.blackListedVC);
if (!queue) {
if (!msg.member.voice.channel)
return msg.channel.send(client.messages.noVoiceChannel);
} else {
if (voiceChannel !== queue.voiceChannel)
return msg.channel.send(client.messages.wrongVoiceChannel);
}
if (!args[1]) return msg.channel.send(client.messages.noQuery);
if (voiceChannel.full) return msg.channel.send(client.messages.channelFull);
if (!voiceChannel.joinable)
return msg.channel.send(client.messages.noPermsConnect);
if (!voiceChannel.speakable)
return msg.channel.send(client.messages.noPermsSpeak);
if (ytdl.validateURL(url)) {
client.funcs.handleVideo(url, msg, voiceChannel, client, false, "ytdl");
} else if (url.match(/^https?:\/\/(open.spotify.com|spotify.com)(.*)$/)) {
if (url.includes("playlist")) {
const playlistId = url.split("/playlist/")[1].split("?")[0];
client.spotify.getPlaylist(playlistId).then(
async function (data) {
searchPlaylist(data, client, msg, voiceChannel);
},
function (err) {
console.log(err);
msg.channel.send(client.messages.noResultsSpotify);
}
);
} else if (url.includes("album")) {
const albumId = url.split("/album/")[1].split("?")[0];
client.spotify.getAlbumTracks(albumId).then(
async function (data) {
searchAlbum(data, client, msg, voiceChannel);
},
function (err) {
console.log(err);
msg.channel.send(client.messages.noResultsSpotify);
}
);
} else if (url.includes("track")) {
return msg.channel.send(client.messages.disabledSpotifySongs);
/*const trackId = url.split("/track/")[1].split("?")[0];
spotify.searchTracks(trackId)
.then(function (data) {
console.log(data.body)
}, function (err) {
console.log('Something went wrong!', err);
});*/
} else msg.channel.send(client.messages.invalidSpotifyUrl);
} else if (
url.match(/^https?:\/\/(www.youtube.com|youtube.com)\/playlist(.*)$/)
) {
const lmsg = await msg.channel.send(client.messages.loadingSongs);
const playlist = await client.youtube.getPlaylist(url).catch((err) => {
console.log("err1");
});
const videos = await playlist.getVideos().catch((err) => {
console.log("err2");
});
for (const video of Object.values(videos)) {
const video2 = await client.youtube.getVideoByID(video.id).catch((err) => {
console.log("err3");
});
client.spotify.searchTracks(`track:${video2.name}`).then(
function (data) {
client.funcs.handleVideo(
video2.url,
msg,
voiceChannel,
client,
true,
"ytdl",
data.body.tracks.items[0]
);
},
function (err) {
console.log("Something went wrong!", err);
}
);
}
const message = client.messages.playlistAdded.replace(
"%TITLE%",
playlist.title
);
return lmsg.edit(message);
} else {
ytsr(
searchString, {
limit: 5,
},
function (err, res) {
if (err) console.log(err);
if (!res.items[0]) return msg.channel.send(client.messages.noResults);
const videoResults = res.items.filter(
(item) => item.type === "video"
);
client.spotify.searchTracks(`track:${searchString}`).then(
function (data) {
client.funcs.handleVideo(
videoResults[0].link,
msg,
voiceChannel,
client,
false,
"ytdl",
data.body.tracks.items[0]
);
},
function (err) {
console.log(err);
}
);
}
);
}
},
};
async function searchPlaylist(data, client, msg, voiceChannel) {
const lmsg = await msg.channel.send(client.messages.loadingSongs);
let failed = 0;
for (let i = 0; data.body.tracks.items.length > i; i++) {
const track = await data.body.tracks.items[i].track;
await client.funcs.sleep(250);
ytsr(
`${track.artists[0].name} ${track.name} audio`, {
limit: 5,
},
async function (err, res) {
if (err) return console.log(err);
if (!res.items[0]) {
ytsr(
`${track.artists[0].name} ${track.name} lyrics`, {
limit: 5,
},
async function (err, res) {
if (err) return console.log(err);
if (!res.items[0]) {
ytsr(
`${track.artists[0].name} ${track.name}`, {
limit: 5,
},
async function (err, res) {
if (err) console.log(err);
if (!res.items[0]) {
failed++;
}
const videoResults = res.items.filter(
(item) => item.type === "video"
);
client.funcs.handleVideo(
videoResults[0].link,
msg,
voiceChannel,
client,
false,
"spotify",
track
);
}
);
return;
}
const videoResults = res.items.filter(
(item) => item.type === "video"
);
await client.funcs.handleVideo(
videoResults[0].link,
msg,
voiceChannel,
client,
true,
"spotify",
track
);
}
);
failed++;
return;
}
const videoResults = res.items.filter((item) => item.type === "video");
await client.funcs.handleVideo(
videoResults[0].link,
msg,
voiceChannel,
client,
true,
"spotify",
track
);
}
);
}
let message;
if (failed === 0) {
message = client.messages.playlistAdded.replace("%TITLE%", data.body.name);
} else {
message = `${client.messages.playlistAdded.replace(
"%TITLE%",
data.body.name
)}\n${client.messages.failedToLoad + failed}`;
}
lmsg.edit(message);
}
async function searchAlbum(data, client, msg, voiceChannel) {
const lmsg = await msg.channel.send(client.messages.loadingSongs);
let failed = 0;
for (let i = 0; data.body.items.length > i; i++) {
const track = await data.body.items[i];
await client.funcs.sleep(250);
ytsr(
`${track.artists[0].name} ${track.name} audio`, {
limit: 5,
},
async function (err, res) {
if (err) return console.log(err);
if (!res.items[0]) {
ytsr(
`${track.artists[0].name} ${track.name} lyrics`, {
limit: 5,
},
async function (err, res) {
if (err) return console.log(err);
if (!res.items[0]) {
ytsr(
`${track.artists[0].name} ${track.name}`, {
limit: 5,
},
async function (err, res) {
if (err) console.log(err);
if (!res.items[0]) {
failed++;
}
const videoResults = res.items.filter(
(item) => item.type === "video"
);
client.funcs.handleVideo(
videoResults[0].link,
msg,
voiceChannel,
client,
false,
"spotify",
track
);
}
);
return;
}
const videoResults = res.items.filter(
(item) => item.type === "video"
);
await client.funcs.handleVideo(
videoResults[0].link,
msg,
voiceChannel,
client,
true,
"spotify",
track
);
}
);
failed++;
return;
}
const videoResults = res.items.filter((item) => item.type === "video");
await client.funcs.handleVideo(
videoResults[0].link,
msg,
voiceChannel,
client,
true,
"spotify",
track
);
}
);
}
let message;
if (failed === 0) {
message = client.messages.albumAdded.replace(
"%TITLE%",
"yes taht palylist"
);
} else {
message = `${client.messages.albumAdded.replace(
"%TITLE%",
"yes taht palylist"
)}\n${client.messages.failedToLoad + failed}`;
}
lmsg.edit(message);
}
async function searchSong(data, client, msg, voiceChannel) {
const lmsg = await msg.channel.send(client.messages.loadingSongs);
let failed = 0;
for (let i = 0; data.body.tracks.items.length > i; i++) {
const track = await data.body.tracks.items[i].track;
await client.funcs.sleep(250);
ytsr(
`${track.artists[0].name} ${track.name} audio`, {
limit: 5,
},
async function (err, res) {
if (err) return console.log(err);
if (!res.items[0]) {
ytsr(
`${track.artists[0].name} ${track.name} lyrics`, {
limit: 5,
},
async function (err, res) {
if (err) return console.log(err);
if (!res.items[0]) {
ytsr(
`${track.artists[0].name} ${track.name}`, {
limit: 5,
},
async function (err, res) {
if (err) console.log(err);
if (!res.items[0]) {
failed++;
}
const videoResults = res.items.filter(
(item) => item.type === "video"
);
client.funcs.handleVideo(
videoResults[0].link,
msg,
voiceChannel,
client,
false,
"spotify",
track
);
}
);
return;
}
const videoResults = res.items.filter(
(item) => item.type === "video"
);
await client.funcs.handleVideo(
videoResults[0].link,
msg,
voiceChannel,
client,
true,
"spotify",
track
);
}
);
failed++;
return;
}
const videoResults = res.items.filter((item) => item.type === "video");
await client.funcs.handleVideo(
videoResults[0].link,
msg,
voiceChannel,
client,
true,
"spotify",
track
);
}
);
}
let message;
if (failed === 0) {
message = client.messages.playlistAdded.replace("%TITLE%", data.body.name);
} else {
message = `${client.messages.playlistAdded.replace(
"%TITLE%",
data.body.name
)}\n${client.messages.failedToLoad + failed}`;
}
lmsg.edit(message);
}
+17
View File
@@ -0,0 +1,17 @@
module.exports = {
name: 'previous',
alias: ["prev", "return", "back"],
usage: '',
description: 'Play the previous song.',
permission: 'MANAGE_MESSAGES',
category: 'music control',
async execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id)
if (client.funcs.check(client, msg, command)) {
if (queue.prevSongs.length < 1) return msg.channel.send(client.messages.noPreviousSongs);
queue.endReason = "previous";
queue.connection.dispatcher.end()
msg.channel.send(client.messages.previousSong)
}
}
};
+29
View File
@@ -0,0 +1,29 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: 'queue',
alias: ["q", "list", "ls", "songs"],
usage: '',
description: 'See the queue.',
permission: 'none',
category: 'info',
async execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (!queue) return msg.channel.send(client.messages.noServerQueue);
const page = 1;
let queuesongs = queue.songs.slice((page - 1) * 20 + 1, page * 20 + 1);
let queuemessage = `${queuesongs.map(song => `**#** ${song.title}`).join('\n')}`
const hashs = queuemessage.split('**#**').length;
for (let i = 0; i < hashs; i++) {
queuemessage = queuemessage.replace('**#**', `**${i + 1}**`);
}
let message;
message = client.messages.queueDesc.replace("%SONG%", queue.songs[0].title);
const embed = new EmbedBuilder()
.setTitle(client.messages.queueTitle)
.setDescription(`${message}\n${queuemessage}`)
.setFooter({ text: `${queue.songs.length - 1} ${client.messages.queueFooter}`})
.setColor(client.config.embedColor)
return msg.channel.send(embed);
}
};
+31
View File
@@ -0,0 +1,31 @@
module.exports = {
name: "remove",
alias: ["rm", "delete", "del"],
usage: "<song pos>",
description: "Remove a song from the queue",
permission: "MANAGE_MESSAGES",
category: "music control",
execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (client.funcs.check(client, msg, command)) {
if (!args[1]) return msg.channel.send(client.messages.provideASong);
const pos = parseInt(args[1]);
if (isNaN(pos)) return msg.channel.send(client.messages.validNumber);
if (pos < 1) return msg.channel.send(client.messages.noSongs);
let message1;
let message2;
message1 = client.messages.queueLength.replace(
"%SONGS%",
queue.songs.length - 1
);
if (pos < 0) return msg.channel.send(client.messages.noSongsInQueue);
if (pos >= queue.songs.length) return msg.channel.send(message1);
message2 = client.messages.removed.replace(
"%SONG%",
queue.songs[pos].title
);
msg.channel.send(message2);
return queue.songs.splice(pos, 1);
}
},
};
+15
View File
@@ -0,0 +1,15 @@
module.exports = {
name: 'replay',
alias: ["rp"],
usage: '',
description: 'Replay the currently playing song.',
permission: 'MANAGE_MESSAGES',
category: 'play',
async execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (client.funcs.check(client, msg, command)) {
queue.endReason = "replay";
queue.connection.dispatcher.end()
}
}
};
+17
View File
@@ -0,0 +1,17 @@
module.exports = {
name: 'resume',
alias: ["continue"],
usage: '',
description: 'Resume the paused music.',
permission: 'MANAGE_MESSAGES',
category: 'music control',
execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (client.funcs.check(client, msg, command)) {
if (!queue.paused) return msg.channel.send(client.messages.notPaused);
queue.paused = false;
queue.connection.dispatcher.resume();
return msg.channel.send(client.messages.resumed);
}
}
};
+61
View File
@@ -0,0 +1,61 @@
const ytsr = require('ytsr');
const he = require('he');
const { EmbedBuilder } = require('discord.js');
module.exports = {
name: 'search',
alias: ["sr", "find"],
usage: '<search word(s)>',
description: 'Search the top 10 queryes and choose one.',
permission: 'none',
category: 'play',
async execute(msg, args, client, command) {
const searchString = args.slice(1).join(" ");
const queue = client.queue.get(msg.guild.id);
const voiceChannel = msg.member.voice.channel;
if (!queue) {
if (!msg.member.voice.channel) return msg.channel.send(client.messages.noVoiceChannel);
} else {
if (voiceChannel !== queue.voiceChannel) return msg.channel.send(client.messages.wrongVoiceChannel);
}
if (!args[1]) return msg.channel.send(client.messages.noQuery);
if (voiceChannel.full) return msg.channel.send(client.messages.channelFull);
if (!voiceChannel.joinable) return msg.channel.send(client.messages.noPermsConnect);
if (!voiceChannel.speakable) return msg.channel.send(client.messages.noPermsSpeak);
ytsr(searchString, {
limit: 20,
}, async function (err, res) {
if (err) return console.log(err);
if (!res.items[0]) return msg.channel.send(client.messages.noResults);
const videoResults = res.items.filter(item => item.type === "video");
const videos = videoResults.slice(0, 10);
let index = 0;
const embed = new EmbedBuilder()
.setTitle(client.messages.songSelection)
.setDescription(`${videos.map(video2 => `**${++index}** ${he.decode(video2.title)} `).join('\n')}`)
.setFooter({ text: client.messages.provideANumber })
.setColor(client.config.embedColor)
msg.channel.send(embed);
try {
var response = await msg.channel.awaitMessages(message2 => message2.content > 0 && message2.content < 11 && message2.author === msg.author, {
max: 1,
time: 10000,
errors: ['time']
});
} catch (err) {
console.error(err);
return msg.channel.send(client.messages.cancellingVideoSelection);
}
const videoIndex = parseInt(response.first().content) - 1;
client.spotify.searchTracks(`track:${videos[videoIndex].title}`)
.then(function (data) {
client.funcs.handleVideo(
videos[videoIndex].link, msg, voiceChannel, client, false, "ytdl",
data.body.tracks.items[0]
);
}, function (err) {
console.log('Something went wrong!', err);
});
})
}
};
+36
View File
@@ -0,0 +1,36 @@
module.exports = {
name: "seek",
alias: ["none"],
usage: "<point in song (seconds)>",
description: "Seek to a specific point in the currently playing song.",
permission: "MANAGE_MESSAGES",
category: "music control",
async execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (client.funcs.check(client, msg, command)) {
if (queue.nightCore)
return msg.channel.send(client.messages.disableNightCore);
if (!args[1])
return msg.channel.send(
`${client.messages.correctUsage}\`${
client.global.db.guilds[msg.guild.id].prefix
}seek ${command.usage}\``
);
const pos = parseInt(args[1]);
if (isNaN(pos)) return msg.channel.send(client.messages.validNumber);
if (pos < 0)
return msg.channel.send(client.messages.seekingPointPositive);
const totalLength = parseInt(queue.songs[0].info.lengthSeconds);
let message;
if (pos > totalLength) {
message = client.messages.seekMax.replace(
"%LENGTH%",
queue.songs[0].info.lengthSeconds
);
return msg.channel.send(message);
}
client.funcs.end(client, msg, pos, command);
}
},
};
+55
View File
@@ -0,0 +1,55 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: "settings",
alias: ["options", "ops", "preferences"],
usage: "<setting> <value(opt)>",
description: "Change the server settings for Musix.",
permission: "MANAGE_GUILD",
category: "util",
async execute(msg, args, client, command) {
let footer;
footer = client.messages.settingsFooter.replace(
"%PREFIX%",
client.global.db.guilds[msg.guild.id].prefix
);
const embed = new EmbedBuilder()
.setTitle(client.messages.settingsTitle)
.addFields(
{ name: client.messages.settingsPrefix, value: client.messages.settingsPrefixDesc, inline: true },
{ name: client.messages.settingsVolume, value: client.messages.settingsVolumeDesc, inline: true },
{ name: client.messages.settingsBlacklist, value: client.messages.settingsBlacklistDesc, inline: true },
{ name: client.messages.settingsPermissions, value: client.messages.settingsPermissionsDesc, inline: true },
{ name: client.messages.settingsSetDj, value: client.messages.settingsSetDjDesc, inline: true },
{ name: client.messages.settingsAnnounceSongs, value: client.messages.settingsAnnounceSongsDesc },
{ name: client.messages.settingsBass, value: client.messages.settingsBassDesc, inline: true },
{ name: client.messages.settingsAutoPlay, value: client.messages.settingsAutoPlayDesc, inline: true }
)
.setFooter({ text: footer })
.setAuthor({ name: client.user.username, iconURL: client.user.avatarURL() })
.setColor(client.config.embedColor);
const permissions = msg.channel.permissionsFor(msg.author);
if (msg.author.id !== client.config.devId) {
if (!permissions.has(command.permission))
return msg.channel.send(client.messages.noPermsManageSettings);
}
if (args[1]) {
const optionName = args[1].toLowerCase();
const option =
client.settingCmd.get(optionName) ||
client.settingCmd.find(
(cmd) => cmd.aliases && cmd.aliases.includes(optionName)
);
if (!option) return msg.channel.send(embed);
try {
option.execute(msg, args, client);
} catch (error) {
msg.reply(client.messages.errorExeOpt);
console.log(error.toString());
console.log(error.stack.replace(/at /g, "**at **"));
}
} else {
return msg.channel.send(embed);
}
},
};
+17
View File
@@ -0,0 +1,17 @@
module.exports = {
name: 'announcesongs',
async execute(msg, args, client) {
if (!args[2]) return msg.channel.send(`${client.messages.announceSongs} \`${client.global.db.guilds[msg.guild.id].announceSongs}\``);
if (args[2] === 'true') {
if (!client.global.db.guilds[msg.guild.id].announceSongs) {
client.global.db.guilds[msg.guild.id].announceSongs = true;
msg.channel.send(client.messages.announceSongsTrue);
} else return msg.channel.send(client.messages.announceSongsTrue);
} else if (args[2] === 'false') {
if (client.global.db.guilds[msg.guild.id].announceSongs) {
client.global.db.guilds[msg.guild.id].announceSongs = false;
msg.channel.send(client.messages.announceSongsFalse);
} else return msg.channel.send(client.messages.announceSongsFalse);
} else return msg.channel.send(client.messages.boolean);
}
};
+17
View File
@@ -0,0 +1,17 @@
module.exports = {
name: 'autoplay',
async execute(msg, args, client) {
if (!args[2]) return msg.channel.send(`${client.messages.autoPlay} \`${client.global.db.guilds[msg.guild.id].autoPlay}\``);
if (args[2] === 'true') {
if (!client.global.db.guilds[msg.guild.id].autoPlay) {
client.global.db.guilds[msg.guild.id].autoPlay = true;
msg.channel.send(client.messages.autoPlayTrue);
} else return msg.channel.send(client.messages.autoPlayTrue);
} else if (args[2] === 'false') {
if (client.global.db.guilds[msg.guild.id].autoPlay) {
client.global.db.guilds[msg.guild.id].autoPlay = false;
msg.channel.send(client.messages.autoPlayFalse);
} else return msg.channel.send(client.messages.autoPlayFalse);
} else return msg.channel.send(client.messages.boolean);
}
};
+14
View File
@@ -0,0 +1,14 @@
module.exports = {
name: 'bass',
async execute(msg, args, client) {
if (!args[2]) return msg.channel.send(client.messages.currentDefaultBass + client.global.db.guilds[msg.guild.id].bass);
if (args[2] === "false") {
client.global.db.guilds[msg.guild.id].bass = false;
return msg.channel.send(client.messages.bassFalse);
}
const level = parseInt(args[2]);
if (isNaN(level)) return msg.channel.send(client.messages.validNumber);
client.global.db.guilds[msg.guild.id].bass = level;
msg.channel.send(`${client.messages.bassLevel} ${level}!`);
}
};
+115
View File
@@ -0,0 +1,115 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: "blacklist",
async execute(msg, args, client) {
let embed;
switch (args[2]) {
case "add":
if (msg.mentions.channels.first()) {
if (
client.global.db.guilds[msg.guild.id].blacklist.includes(
msg.mentions.channels.first().id
)
)
return msg.channel.send(client.messages.channelAlreadyBlackListed);
} else if (
client.global.db.guilds[msg.guild.id].blacklist.includes(args[3])
)
return msg.channel.send(client.messages.channelAlreadyBlackListed);
if (
!msg.guild.channels.cache.get(args[3]) &&
!msg.mentions.channels.first()
)
return msg.channel.send(client.messages.idOrMentionChannel);
if (msg.mentions.channels.first()) {
client.global.db.guilds[msg.guild.id].blacklist.push(
msg.mentions.channels.first().id
);
let message;
message = client.messages.channelAdded.replace(
"%CHANNEL%",
msg.mentions.channels.first().name
);
msg.channel.send(message);
} else {
client.global.db.guilds[msg.guild.id].blacklist.push(args[3]);
let message;
message = client.messages.channelAdded.replace(
"%CHANNEL%",
msg.guild.channels.cache.get(args[3]).name
);
msg.channel.send(message);
}
break;
case "remove":
if (msg.mentions.channels.first()) {
if (
!client.global.db.guilds[msg.guild.id].blacklist.includes(
msg.mentions.channels.first().id
)
)
return msg.channel.send(client.messages.channelNotBlackListed);
if (
client.global.db.guilds[msg.guild.id].blacklist.indexOf(
msg.mentions.channels.first().id
) !== -1
) {
client.global.db.guilds[msg.guild.id].blacklist.splice(
client.global.db.guilds[msg.guild.id].blacklist.indexOf(
msg.mentions.channels.first().id
),
1
);
let message;
message = client.messages.channelRemoved.replace(
"%CHANNEL%",
msg.mentions.channels.first().name
);
msg.channel.send(message);
}
} else {
if (!client.global.db.guilds[msg.guild.id].blacklist.includes(args[3]))
return msg.channel.send(client.messages.channelNotBlackListed);
if (
client.global.db.guilds[msg.guild.id].blacklist.indexOf(args[3]) !==
-1
) {
client.global.db.guilds[msg.guild.id].blacklist.splice(
client.global.db.guilds[msg.guild.id].blacklist.indexOf(args[3]),
1
);
let message;
message = client.messages.channelRemoved.replace(
"%CHANNEL%",
msg.guild.channels.cache.get(args[3]).name
);
msg.channel.send(message);
}
}
break;
case "list":
embed = new EmbedBuilder()
.setTitle(client.messages.blacklistTitle)
.setDescription(
`${client.global.db.guilds[msg.guild.id].blacklist
.map((c) => `**-** <#${c}>`)
.join("\n")}`
)
.setColor(client.config.embedColor);
msg.channel.send(embed);
break;
case undefined:
embed = new EmbedBuilder()
.setTitle(client.messages.blacklistTitle)
.addFields(
{ name: "add", value: "Add a channel to the blacklist. (ID or mention)" },
{ name: "remove", value: "Remove a channel from the blacklist. (ID or mention)" },
{ name: "list", value: "List the currently blacklisted channels." }
)
.setColor(client.config.embedColor);
msg.channel.send(embed);
break;
}
},
};
+17
View File
@@ -0,0 +1,17 @@
module.exports = {
name: 'permissions',
async execute(msg, args, client) {
if (!args[2]) return msg.channel.send(`${client.messages.permission} \`${client.global.db.guilds[msg.guild.id].permissions}\``);
if (args[2] === 'true') {
if (!client.global.db.guilds[msg.guild.id].permissions) {
client.global.db.guilds[msg.guild.id].permissions = true;
msg.channel.send(client.messages.permissionsSetTrue);
} else return msg.channel.send(client.messages.permissionsTrue);
} else if (args[2] === 'false') {
if (client.global.db.guilds[msg.guild.id].permissions) {
client.global.db.guilds[msg.guild.id].permissions = false;
msg.channel.send(client.messages.permissionsSetFalse);
} else return msg.channel.send(client.messages.permissionsFalse);
} else return msg.channel.send(client.messages.boolean);
}
};
+9
View File
@@ -0,0 +1,9 @@
module.exports = {
name: 'prefix',
async execute(msg, args, client) {
if (!args[2]) return msg.channel.send(`${client.messages.currentPrefix} \`${client.global.db.guilds[msg.guild.id].prefix}\``);
if (args[2].length > 5) return msg.channel.send(client.messages.prefixMaxLength);
client.global.db.guilds[msg.guild.id].prefix = args[2];
msg.channel.send(`${client.messages.prefixSet} \`${args[2]}\``);
}
};
+27
View File
@@ -0,0 +1,27 @@
module.exports = {
name: "premium",
async execute(msg, args, client) {
if (!args[2])
return msg.channel.send(
client.messages.premiumState +
client.global.db.guilds[msg.guild.id].premium
);
if (client.global.db.guilds[args[2]].premium === false) {
client.global.db.guilds[args[2]].premium = true;
let message;
message = client.messages.nowPremium.replace(
"%GUILD%",
client.guilds.cache.get(args[2]).name
);
msg.channel.send(message);
} else if (client.global.db.guilds[args[2]].premium === true) {
client.global.db.guilds[args[2]].premium = false;
let message;
message = client.messages.noMorePremium.replace(
"%GUILD%",
client.guilds.cache.get(args[2]).name
);
msg.channel.send(message);
}
},
};
+18
View File
@@ -0,0 +1,18 @@
module.exports = {
name: 'reset',
async execute(msg, args, client) {
client.global.db.guilds[msg.guild.id] = {
prefix: client.config.prefix,
defaultVolume: client.config.defaultVolume,
permissions: client.config.permissions,
dj: client.config.dj,
djrole: client.config.djrole,
startPlaying: client.config.startPlaying,
bass: client.config.bass,
blacklist: [],
premium: false,
autoPlay: client.config.autoPlay,
};
msg.channel.send(client.messages.reset);
}
};
+30
View File
@@ -0,0 +1,30 @@
module.exports = {
name: 'setdj',
async execute(msg, args, client) {
if (!client.global.db.guilds[msg.guild.id].dj) {
if (!client.global.db.guilds[msg.guild.id].permissions) {
client.global.db.guilds[msg.guild.id].permissions = true;
}
if (msg.guild.roles.cache.find(x => x.name === "DJ")) {
client.global.db.guilds[msg.guild.id].djrole = msg.guild.roles.cache.find(x => x.name === "DJ").id;
msg.channel.send(client.messages.djRoleFound);
client.global.db.guilds[msg.guild.id].dj = true;
} else {
const permissions = msg.channel.permissionsFor(msg.client.user);
if (!permissions.has('MANAGE_ROLES')) return msg.channel.send(client.messages.noPermsManageRoles);
msg.guild.createRole({
name: 'DJ',
})
.then(role => client.global.db.guilds[msg.guild.id].djrole = role.id)
.catch((error) => {
console.log(error);
})
client.global.db.guilds[msg.guild.id].dj = true;
msg.channel.send(client.messages.djRoleCreated);
}
} else {
client.global.db.guilds[msg.guild.id].dj = false;
msg.channel.send(client.messages.djFalse);
}
}
};
+10
View File
@@ -0,0 +1,10 @@
module.exports = {
name: 'volume',
async execute(msg, args, client) {
if (!args[2]) return msg.channel.send(`${client.messages.currentDefaultVolume} \`${client.global.db.guilds[msg.guild.id].defaultVolume}\``);
if (isNaN(args[2])) return msg.channel.send(client.messages.defaultVolumeNumber);
if (args[2].length > 2) return msg.channel.send(client.messages.defaultVolumeMax);
client.global.db.guilds[msg.guild.id].defaultVolume = args[2];
msg.channel.send(`${client.messages.defaultVolumeSet} \`${args[2]}\``);
}
};
+15
View File
@@ -0,0 +1,15 @@
module.exports = {
name: 'shuffle',
alias: ["none"],
usage: '',
description: 'Shuffle the queue.',
permission: 'MANAGE_MESSAGES',
category: 'music control',
execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (client.funcs.check(client, msg, command)) {
client.funcs.shuffle(queue.songs);
msg.channel.send(client.messages.shuffled);
}
}
};
+63
View File
@@ -0,0 +1,63 @@
module.exports = {
name: "skip",
alias: ["s", "next"],
usage: "",
description: "Skip the currently playing song.",
permission: "MANAGE_MESSAGES",
category: "music control",
execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
const permissions = msg.channel.permissionsFor(msg.author);
if (!queue || !queue.playing)
return msg.channel.send(client.messages.noServerQueue);
if (msg.author.id !== client.config.devId) {
if (msg.member.voice.channel !== queue.voiceChannel)
return msg.channel.send(client.messages.wrongVoiceChannel);
if (client.global.db.guilds[msg.guild.id].permissions) {
if (
!msg.member.roles.cache.has(
client.global.db.guilds[msg.guild.id].djrole
) ||
!permissions.has(command.permission)
) {
return vote(queue, msg, client);
} else {
return skipSong(queue, msg, client);
}
} else {
return skipSong(queue, msg, client);
}
} else {
return skipSong(queue, msg, client);
}
},
};
function skipSong(queue, msg, client) {
msg.channel.send(client.messages.skipped);
queue.endReason = "skip";
queue.time = 0;
queue.connection.dispatcher.end();
}
function vote(queue, msg, client) {
queue.votesNeeded = Math.floor(queue.voiceChannel.members.size / 2);
queue.votesNeeded.toFixed();
if (queue.voiceChannel.members.size > 2) {
if (queue.voters.includes(msg.member.id))
return msg.channel.send(client.messages.alreadyVoted);
queue.votes++;
queue.voters.push(msg.member.id);
if (queue.votes >= queue.votesNeeded) {
queue.voters = [];
queue.votes = 0;
queue.votesNeeded = null;
return skipSong(queue, msg, client);
} else
return msg.channel.send(
`${client.messages.notEnoughVotes} ${queue.votes} / ${queue.votesNeeded}!`
);
} else {
return skipSong(queue, msg, client);
}
}
+30
View File
@@ -0,0 +1,30 @@
module.exports = {
name: "skipto",
alias: ["st"],
usage: "<point in queue>",
description: "Skip to a point in the queue",
permission: "MANAGE_MESSAGES",
category: "music control",
async execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (client.funcs.check(client, msg, command)) {
if (!args[1])
return msg.channel.send(
`${client.messages.correctUsage}\`${command.usage}\``
);
let point = parseInt(args[1]);
point = point - 1;
if (isNaN(point)) return msg.channel.send(client.messages.validNumber);
if (point > queue.songs.length - 1)
return msg.channel.send(client.messages.noSongs);
if (point < 0) return msg.channel.send(client.messages.cantSkipToCurrent);
for (let i = 0; i < point; i++) {
queue.prevSongs.push(queue.songs.shift());
}
msg.channel.send(client.messages.skipped);
queue.endReason = "skipto";
queue.time = 0;
queue.connection.dispatcher.end();
}
},
};
+29
View File
@@ -0,0 +1,29 @@
const { EmbedBuilder } = require("discord.js");
module.exports = {
name: 'status',
alias: ["stats", "info"],
usage: '',
description: 'See the current status for Musix.',
permission: 'none',
category: 'info',
execute(msg, args, client, command) {
const uptime = client.funcs.msToTime(client.uptime, "dd:hh:mm:ss");
msg.channel.send(client.messages.pinging).then(m => {
const latency = m.createdTimestamp - msg.createdTimestamp;
const embed = new EmbedBuilder()
.setTitle(client.messages.statusTitle)
.addFields(
{ name: client.messages.statusField1, value: client.ws.ping, inline: true },
{ name: client.messages.statusField2, value: latency, inline: true },
{ name: client.messages.statusField3, value: uptime, inline: true },
{ name: client.messages.statusField4, value: client.shard.ids },
)
.setAuthor({ name: client.user.username, iconURL: client.user.avatarURL() })
.setColor(client.config.embedColor)
m.delete();
return msg.channel.send(embed);
});
}
};
+30
View File
@@ -0,0 +1,30 @@
module.exports = {
name: 'stop',
description: 'Stop the music and clear the queue.',
alias: ["none"],
usage: '',
permission: 'MANAGE_CHANNELS',
category: 'music control',
execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (client.funcs.check(client, msg, command)) {
if (msg.content.includes("-force")) {
if (queue) {
queue.voiceChannel.leave();
queue.exists = false;
}
if (msg.guild.voice.channel) msg.guild.voice.channel.leave();
client.queue.delete(msg.guild.id);
return msg.channel.send(client.messages.stop);
}
if (!queue || !queue.playing) {
return msg.channel.send(client.messages.noServerQueue);
}
queue.songs = [];
queue.looping = false;
queue.endReason = "stop";
queue.connection.dispatcher.end();
msg.channel.send(client.messages.stop);
}
}
};
+22
View File
@@ -0,0 +1,22 @@
module.exports = {
name: 'volume',
description: 'Volume command.',
alias: ["none"],
usage: '<volume>',
cooldown: 5,
permission: 'MANAGE_MESSAGES',
category: 'music control',
execute(msg, args, client, command) {
const queue = client.queue.get(msg.guild.id);
if (!args[1] && queue) return msg.channel.send(`${client.messages.currentVolume}**${queue.volume}**`);
const volume = parseFloat(args[1]);
if (client.funcs.check(client, msg, command)) {
if (isNaN(volume)) return msg.channel.send(client.messages.validNumber);
if (volume > 100) return msg.channel.send(client.messages.maxVolume);
if (volume < 0) return msg.channel.send(client.messages.positiveVolume);
queue.volume = volume;
queue.connection.dispatcher.setVolume(volume / 100);
return msg.channel.send(`${client.messages.setVolume}**${volume}**`);
}
}
};
+99
View File
@@ -0,0 +1,99 @@
require("dotenv/config");
module.exports = {
discord_api_token: process.env.DISCORD_API_TOKEN,
bodKey: process.env.BODKEY,
youtube_api_key: process.env.YOUTUBE_API_KEY,
genius_api_key: process.env.GENIUS_API_KEY,
soundcloud_api_key: process.env.SOUNDCLOUD_API_KEY,
spotify_access_key: process.env.SPOTIFY_ACCESS_KEY,
spotify_client_secret: process.env.SPOTIFY_CLIENT_SECRET,
spotify_client_id: process.env.SPOTIFY_CLIENT_ID,
spotify_refresh_token: process.env.SPOTIFY_REFRESH_TOKEN,
lastfm_api_key: process.env.LASTFM_API_KEY,
lastfm_secret: process.env.LASTFM_SECRET,
port: 8888,
redirectUri: "http://localhost:8888/callback/",
testServer: "489111553321336832",
primary_test_channel: "617633098296721409",
secondary_test_channel: "570531724002328577",
devId: "360363051792203779",
embedColor: "#b50002",
invite: "https://musix-web.herokuapp.com/releases",
supportServer: "https://musix-web.herokuapp.com/discord",
devMode: false,
api: false,
saveDB: true,
respawn: true,
shards: 10,
shardDelay: 10000,
spawnTimeout: 60000,
respawnDelay: 1000,
prefix: ">",
devPrefix: "-",
defaultVolume: 50,
permissions: false,
dj: false,
djrole: null,
startPlaying: true,
bass: 1,
autoPlay: false,
};
module.exports.streamConfig = {
ytdlOptions: {
filter: "audio",
highWaterMark: 1 << 25,
volume: false,
requestOptions: {
maxRedirects: 4,
},
},
options: {
seek: null,
bitrate: 1024,
volume: 1,
type: "converted",
},
};
module.exports.queueConfig = {
textChannel: null,
voiceChannel: null,
connection: null,
songs: [],
volume: null,
bass: null,
nightCore: false,
playing: false,
paused: false,
looping: false,
songLooping: false,
votes: 0,
voters: [],
votesNeeded: null,
time: 0,
endReason: null,
};
module.exports.emojis = {
garbage: "🗑️ ",
green_check_mark: "<:green_check_mark:674265384777416705> ",
loading: "<a:loading:674284196700618783> ",
loudSound: ":loud_sound: ",
megaPhone: "📣 ",
notes: "<a:aNotes:674602408105476106>",
pause: "<:pause:674685548610322462> ",
previous: "<:reverse:705012312142119012> ",
redx: "<:redx:674263474704220182> ",
repeat: "<:repeat1:674685561377914892> ",
repeatSong: "<:repeatsong:674685573419761716> ",
resume: "<:resume:674685585478254603> ",
shuffle: "<:shuffle:674685595980791871> ",
signal: ":signal_strength: ",
skip: "<:skip:674685614221688832> ",
speaker: ":speaker: ",
stop: "<:stop:674685626108477519> ",
stopWatch: ":stopwatch: ",
volumeHigh: "<:volumehigh:674685637626167307> ",
};
+197
View File
@@ -0,0 +1,197 @@
const {
emojis
} = require("./config.js");
module.exports = {
emojis: emojis,
albumAdded: emojis.green_check_mark +
"Album has been added to the queue!",
alreadyPaused: emojis.redx + "The music is already paused!",
alreadyVoted: emojis.redx + "You have already voted to skip!",
announceSongs: emojis.megaPhone + "Current setting:",
announceSongsFalse: emojis.green_check_mark + "announcesongs now set to `false`!",
announceSongsTrue: emojis.green_check_mark + "announcesongs now set to `true`!",
autoPlay: "Current setting:",
autoPlayFalse: emojis.green_check_mark + "autoplay now set to `false`!",
autoPlayTrue: emojis.green_check_mark + "autoplay now set to `true`!",
bassApplied: emojis.volumeHigh + "The bass level **%BASS%** has been applied!",
bassFalse: emojis.green_check_mark + "Bass is now false!",
bassLevel: emojis.green_check_mark + "Bass level is now",
blacklistTitle: "Currently blacklisted channels:",
blackListedVC: emojis.redx +
"Your voiceChannel is blacklisted! Please choose another channel!",
boolean: emojis.redx + "Please define a boolean! (true/false)",
cancellingVideoSelection: emojis.redx + "Cancelling video selection",
cantSkipToCurrent: emojis.redx + "You can't skip to the song currently playing!",
channelAdded: emojis.green_check_mark + "Channel %CHANNEL% added to the blacklist!",
channelAlreadyBlackListed: emojis.redx + "That channel is already blacklisted!",
channelFull: emojis.redx + "Your voice channel is full!",
channelNotBlackListed: emojis.redx + "That channel is not blacklisted or does not exist!",
channelRemoved: emojis.green_check_mark +
"Channel %CHANNEL% has been removed from the blacklist!",
cmdUsesFooter: "These statistics are from the current uptime.",
cmdUsesTitle: "Musix Command Usage During Current Uptime",
correctUsage: emojis.redx + "correct usage: ",
currentBass: emojis.loudSound + "The current bass is: ",
currentDefaultBass: emojis.speaker + "Currect default bass level: ",
currentDefaultVolume: emojis.speaker + "Current default volume is:",
currentNightCore: emojis.speaker + "Currect Nightcore setting: ",
currentPrefix: "Current prefix:",
currentVolume: emojis.loudSound + "The current volume is: ",
dbSaved: emojis.green_check_mark + "DB Saved!",
defaultVolumeMax: emojis.redx +
"The default volume must be below `100` for quality and safety resons.",
defaultVolumeNumber: emojis.redx +
"I'm sorry, But the default volume needs to be a valid __number__.",
defaultVolumeSet: emojis.green_check_mark + "Default volume set to:",
devMode: emojis.redx +
"Dev mode has been turned on! Commands are only available to developer(s)!",
disabledSpotifySongs: emojis.redx + "Spotify songs cannot be played currently!",
disableNightCore: emojis.redx + "Please disable nightCore in order to use this command!",
dispatcherError: "Error with the dispatcher: ",
djFalse: emojis.green_check_mark + "`DJ` now set to `false`",
djRoleCreated: emojis.green_check_mark +
"I did not find a role `DJ` so i have created one for you!",
djRoleFound: emojis.green_check_mark +
"I found a `DJ` role from this guild! This role is now the DJ role.",
error: emojis.redx + "An error occured!.\nError: ",
errorConnecting: "Error with connecting to voice channel: ",
errorDetected: "Error detected: ",
errorDispatcher: emojis.redx +
"An error has occured while playing music! The queue has been deleted.\nError: ",
errorExe: emojis.redx + "there was an error trying to execute that command!",
errorExeOpt: emojis.redx + "there was an error trying to execute that option!",
evalTitle: "Evaluation Command",
failedToLoad: emojis.redx + "Songs failed to load: ",
helpCmdFooter: "Command Alias:",
helpFooter: '"%PREFIX%help <command>" to see more information about a command.',
helpTitle: "help",
idOrMentionChannel: emojis.redx + "Please provide a channel id or mention a channel!",
invalidGuild: emojis.redx + "Invalid guild id!",
invalidSpotifyUrl: emojis.redx + "That url cannot be played! If you believe this is a mistake please contact support!",
inviteTitle: "Invite a release of Musix to your discord server!",
joined: emojis.green_check_mark + "Joined",
joinSupport: "Join the musix support server: ",
keySet: emojis.green_check_mark + "Key set!",
leftAlone: "I have left the channel as i was left alone.",
loadingSongs: emojis.loading + "Loading song(s)",
looping: emojis.repeat + "Looping the queue now!",
loopingSong: emojis.repeatSong + "Looping **%TITLE%** now!",
lyricsTitle: "Lyrics",
lyricsUsage: emojis.redx + "Provide a song to search for!",
maxBass: emojis.redx + "The max bass is `10`!",
maxVolume: emojis.redx + "The max volume is `100`!",
mentionChannel: emojis.redx + "Please mention a channel!",
musicCommandsDisabled: emojis.redx +
"This channels has been blacklisted! Music commands cannot be used here!",
nightCoreApplied: emojis.green_check_mark +
"NightCore is now **%BOOLEAN%** this will be applied when the next song starts playing!",
noDj: emojis.redx + "You need the `DJ` role to use this command!",
noLooping: emojis.repeat + "No longer looping the queue!",
noLoopingSong: emojis.repeatSong + "No longer looping the song!",
noMorePremium: ":cry: Guild %GUILD% is no longer premium!",
noPerms: emojis.redx + `You need the %PERMS% permission to use this command!`,
noPermsConnect: emojis.redx +
"I cannot connect to your voice channel, make sure I have the proper permissions!",
noPermsEmbed: emojis.redx +
"I cannot send embeds (Embed links), make sure I have the proper permissions!",
noPermsManageRoles: emojis.redx +
"I cannot create roles (Manage roles), make sure I have the proper permissions! I will need this permission to create a `DJ` role since i did not find one!",
noPermsManageSettings: emojis.redx +
"You need the `MANAGE_SERVER` permission to change the settings!",
noPermsSpeak: emojis.redx +
"I cannot speak in your voice channel, make sure I have the proper permissions!",
noPermsUseExternalEmojis: emojis.redx +
"I cannot use external emojis, make sure I have the proper permissions!",
noPreviousSongs: emojis.redx + "No previous songs!",
noQuery: emojis.redx + "you need to use a link or search for a song!",
noResults: emojis.redx + "I could not obtain any search results!",
noResultsLyrics: emojis.redx + "I could not obtain any results!",
noResultsSpotify: emojis.redx +
"I could not obtain any results!",
noServerQueue: emojis.redx + "There is nothing playing!",
noSimilarResults: emojis.redx + "No similar songs found!",
noSongs: emojis.redx + "That song does not exist!",
noSongsInQueue: emojis.redx + "There are no songs in the queue!",
notPremium: emojis.redx + "This is not a premium guild!",
nowPlayingDesc: emojis.notes + "**Now playing:**",
notAllowed: emojis.redx + "You are not allowed to do that!",
notEnoughVotes: emojis.redx + "Not enough votes!",
notPaused: emojis.redx + "The music in not paused!",
noVoiceChannel: emojis.redx +
"I'm sorry but you need to be in a voice channel to play music!",
nowPlaying: "__Now playing__",
nowPremium: ":tada: Guild %GUILD% is now premium!",
paused: emojis.pause + "Paused the music!",
permission: "🔒 Permission requirement:",
permissionsFalse: emojis.redx + "That value is already `false`!",
permissionsSetFalse: emojis.green_check_mark + "Permissions requirement now set to: `false`",
permissionsSetTrue: emojis.green_check_mark + "Permissions requirement now set to: `true`",
permissionsTrue: emojis.redx + "That value is already `true`!",
pinging: emojis.loading + "Pinging...",
playlistAdded: emojis.green_check_mark +
"Playlist: **%TITLE%** has been added to the queue!",
positiveBass: emojis.redx + "The bass needs to be a positive number!",
positiveVolume: emojis.redx + "The volume needs to be a positive number!",
prefixHere: "My prefix here is: ",
prefixMaxLength: "The prefix must be shorter or equal to 5 letters!",
prefixSet: emojis.green_check_mark + "New prefix set to:",
premiumState: "Premium status: ",
previousSong: emojis.previous + "Previous",
provideANumber: "Please provide a number ranging from 1-10 to select one of the search results.",
provideASong: emojis.redx + "Please provide a song position in queue for me to remove!",
queueDeleted: "Queue deleted!",
queueDesc: "**Now playing:** %SONG%<a:aNotes:674602408105476106>\n:arrow_down: Next in queue :arrow_down:",
queueFooter: "songs in the queue!",
queueLength: emojis.redx + "There are only %SONGS% song(s) in the queue!",
queueTitle: "__Song queue__",
quotaReached: emojis.redx +
"Quota reached please try again after midnight Pacific Time (PT)!",
reloaded: "All files reloaded!",
removed: emojis.garbage + "removed `%SONG%` from the queue!",
reset: emojis.green_check_mark + "Reset __all__ guild settings!",
restart: "restarting all shards...",
resumed: emojis.resume + "Resumed the music!",
searchSimilarUsage: emojis.redx + "Correct usage: %USAGE%",
seekingPointPositive: emojis.redx + "The seeking point needs to be a positive number!",
seekMax: emojis.redx +
"The lenght of this song is %LENGTH% seconds! You can't seek further than that!",
settingsAnnounceSongs: "announcesongs",
settingsAnnounceSongsDesc: "Whether to announce songs that start playing or not.",
settingsAutoPlay: "autoplay",
settingsAutoPlayDesc: "When the queue ends similar songs will be played.",
settingsBass: "bass",
settingsBassDesc: "Change the default bass level.",
settingsBlacklist: "blacklist",
settingsBlacklistDesc: "Blacklist channels that you wan't to block music commands to be executed on or block the bot from joining certain voiceChannels.",
settingsFooter: "how to use: %PREFIX%settings <Setting name> <value>",
settingsPermissions: "permissions",
settingsPermissionsDesc: "Change whether to require permissions to use eg `skip, stop, pause, loop, etc...`",
settingsPrefix: "prefix",
settingsPrefixDesc: "Change the guild specific prefix. (string)",
settingsSetDj: "setdj",
settingsSetDjDesc: "Set a DJ role. This will allow chosen users to freely use all Musix commands. This will automatically set the `permissions` settings to true in order for the `DJ` role to have effect!",
settingsTitle: "Guild settings for Musix",
settingsVolume: "volume",
settingsVolumeDesc: "Change the default volume that the bot will start playing at. (number)",
setVolume: emojis.volumeHigh + "I set the volume to: ",
shuffled: emojis.shuffle + "Queue suffled!",
skipped: emojis.skip + "Skipped the song!",
songAdded: emojis.green_check_mark + "**%TITLE%** has been added to the queue!",
songBlockedWMG: emojis.redx +
"This song had been blocked by WMG (Warner Music Groud).\n<:skip:674685614221688832> Skipped to next song.",
songsAdded: emojis.green_check_mark + "%AMOUNT% songs added to the queue!",
songSelection: "__Song Selection__",
startPlaying: emojis.notes + "Start playing: ",
statusField1: emojis.signal + "Ping",
statusField2: "Latency",
statusField3: emojis.stopWatch + "Uptime",
statusField4: "Shard: ",
statusTitle: "Status for Musix",
stop: emojis.stop + "Stopped the music!",
tookTooLong: emojis.redx + "Something took too long! Please try again!",
validNumber: emojis.redx + "I'm sorry, But you need to enter a valid __number__.",
videoUnavailable: emojis.redx + "That video is unavaiable! Please try again.",
wrongVoiceChannel: emojis.redx +
"I'm sorry but you need to be in the same voice channel as Musix to use this command!",
};
+29
View File
@@ -0,0 +1,29 @@
module.exports = {
name: "guildcreate",
async execute(client, guild) {
client.db.collection("guilds").doc(guild.id).set({
prefix: client.config.prefix,
defaultVolume: client.config.defaultVolume,
permissions: client.config.permissions,
dj: client.config.dj,
djrole: client.config.djrole,
startPlaying: client.config.startPlaying,
bass: client.config.bass,
blacklist: [],
premium: false,
autoPlay: client.config.autoPlay,
});
client.global.db.guilds[guild.id] = {
prefix: client.config.prefix,
defaultVolume: client.config.defaultVolume,
permissions: client.config.permissions,
dj: client.config.dj,
djrole: client.config.djrole,
startPlaying: client.config.startPlaying,
bass: client.config.bass,
blacklist: [],
premium: false,
autoPlay: client.config.autoPlay,
};
},
};
+6
View File
@@ -0,0 +1,6 @@
module.exports = {
name: "guildcreate",
async execute(client, guild) {
delete client.global.db.guilds[guild.id];
},
};
+36
View File
@@ -0,0 +1,36 @@
module.exports = function (client) {
client.on('ready', () => {
require(`./ready.js`).execute(client);
}).on('message', (msg) => {
require(`./msg.js`).execute(client, msg);
}).on('guildCreate', (guild) => {
require(`./guildCreate.js`).execute(client, guild);
})
.on('guildDelete', (guild) => {
require(`./guildDelete.js`).execute(client, guild);
}).on('voiceStateUpdate', (oldState, newState) => {
require(`./voiceStateUpdate.js`).execute(client, oldState, newState);
}).on('error', (error) => {
console.log(error);
}).on('debug', (info) => {
if (client.config.devMode) console.log(info);
}).on('invalidated', () => {
console.log("Client session invalidated! Exiting the process!")
process.exit(1);
}).on('rateLimit', (rateLimitInfo) => {
}).on('shardDisconnect', (event, id) => {
client.logs.push(`Shard ${id} disconnected event ${event}`);
}).on('shardError', (error, shardId) => {
client.logs.push(`Shard ${shardId} error ${error}`);
}).on('shardReady', (id, unavailableGuilds) => {
client.logs.push(`Shard ${id} ready. Unavailable guilds: ${unavailableGuilds || 0}`);
}).on('shardReconnecting', (id) => {
client.logs.push(`shard ${id} reconnecting.`);
}).on('shardResume', (id, replayedEvents) => {
client.logs.push(`shard ${id} resume events ${replayedEvents}`);
}).on("warn", (info) => {
client.logs.push(`Warn! info: ${info}`);
console.log(`Warn! info: ${info}`);
});
}
+41
View File
@@ -0,0 +1,41 @@
module.exports = {
name: "message",
async execute(client, msg, Discord) {
if (msg.author.bot || !msg.guild) return;
if (!client.global.db.guilds[msg.guild.id]) client.funcs.checkDB(client);
let prefix = client.global.db.guilds[msg.guild.id].prefix || client.config.prefix;
const args = msg.content.slice(prefix.length).split(" ");
if (client.config.devMode) prefix = client.config.devPrefix;
const permission = msg.channel.permissionsFor(client.user);
if (!permission.has("SEND_MESSAGES")) return;
if (msg.mentions.users.first()) {
if (msg.mentions.users.first().id === client.user.id) {
if (!args[1] || args[0] !== `@!${client.user.id}>`) return;
if (args[1] === "prefix") {
if (!args[2])
return msg.channel.send(
`${client.messages.prefixHere}\`${prefix}\`.`
);
if (args[2] === "=" && args[3]) return (prefix = args[3]);
}
args.shift();
getCommand(client, args, msg, Discord);
}
}
if (!msg.content.startsWith(prefix)) return;
getCommand(client, args, msg, Discord);
},
};
function getCommand(client, args, msg) {
if (!args[0]) return;
const commandName = args[0].toLowerCase();
if (commandName === "none") return;
const command =
client.commands.get(commandName) ||
client.commands.find(
(cmd) => cmd.alias && cmd.alias.includes(commandName)
);
if (!command) return;
client.funcs.exe(msg, args, client, command);
}
+45
View File
@@ -0,0 +1,45 @@
module.exports = {
name: "ready",
async execute(client, Discord) {
const remoteMusixGuildsData = await client.funcs.dbget(
"guilds",
null,
client
);
remoteMusixGuildsData.forEach((guildData) => {
client.global.db.guilds[guildData.id] = guildData.d;
});
if (client.config.devMode) {
client.guilds.cache.forEach((guild) => {
client.global.db.guilds[guild.id] = {
prefix: client.config.devPrefix,
defaultVolume: client.config.defaultVolume,
permissions: client.config.permissions,
dj: client.config.dj,
djrole: client.config.djrole,
startPlaying: client.config.startPlaying,
bass: client.config.bass,
blacklist: [],
premium: true,
autoPlay: client.config.autoPlay,
};
});
}
console.log(`- DB Set - Shard: ${client.shard.ids} -`);
client.user.setActivity(`@${client.user.username} help | 🎶`, {
type: "LISTENING",
});
client.user.setStatus("online");
client.funcs.getSpotifyKey(client);
console.log(`- Activated - Shard: ${client.shard.ids} -`);
setInterval(() => {
if (!client.config.devMode) client.funcs.checkDB(client);
}, 60000);
setInterval(async () => {
client.funcs.saveDB(client);
}, 1800000);
setInterval(() => {
client.funcs.getSpotifyKey(client);
}, 3600000);
},
};
@@ -0,0 +1,34 @@
module.exports = {
name: 'voiceStateUpdate',
async execute(client, oldState, newState) {
if (oldState.channel === null) return newState.setSelfDeaf(true);
let change = false;
const queue = client.queue.get(newState.guild.id);
if (!queue) return;
if (newState.member.id === client.user.id && oldState.member.id === client.user.id) {
if (newState.member.voice.channel === null) {
queue.songs = [];
queue.looping = false;
queue.endReason = "manual disconnect";
return client.queue.delete(newState.guild.id);
}
if (newState.member.voice.channel !== queue.voiceChannel) {
change = true;
queue.voiceChannel = newState.member.voice.channel;
queue.connection = newState.connection;
}
}
if (oldState.channel.members.size === 1 && oldState.channel === queue.voiceChannel || change) {
setTimeout(() => {
if (!queue || !queue.connection.dispatcher || queue.connection.dispatcher === null) return;
if (queue.voiceChannel.members.size === 1) {
queue.textChannel.send(client.messages.leftAlone);
queue.songs = [];
queue.looping = false;
queue.endReason = "Timeout";
queue.connection.dispatcher.end();
}
}, 120000);
}
}
}
+21
View File
@@ -0,0 +1,21 @@
module.exports = function (client, connection) {
connection.on("authenticated", () => {
if (client.config.devMode) console.log("Voice connection initiated.");
}).on("debug", (message) => {
if (client.config.devMode) console.log(message);
}).on("disconnect", () => {
if (client.config.devMode) console.log("Voice connection disconnected.");
}).on("error", (error) => {
console.log(error);
}).on("failed", (error) => {
if (client.config.devMode) console.log(error);
}).on("newSession", () => {
if (client.config.devMode) console.log("New voice session id received!");
}).on("ready", () => {
if (client.config.devMode) console.log("Voice connection ready.");
}).on("reconnecting", () => {
if (client.config.devMode) console.log("Voice connection reconnecting.");
}).on("warn", (warning) => {
console.log(`Voice connection warning: ${warning}`);
})
}
+14
View File
@@ -0,0 +1,14 @@
module.exports = {
async execute(client, error, guild) {
const queue = client.queue.get(guild.id);
console.log(error);
/*if (error = "Error: input stream: This video contains content from WMG, who has blocked it on copyright grounds.") {
queue.endReason = "skip";
queue.connection.dispatcher.end();
return queue.textChannel.send(client.messages.songBlockedWMG);
}*/
queue.voiceChannel.leave();
client.queue.delete(guild.id);
return queue.textChannel.send(client.messages.errorDispatcher + `\`${error}\``);
},
};
+95
View File
@@ -0,0 +1,95 @@
const similarSongs = require("similar-songs");
const ytdl = require("ytdl-core");
module.exports = {
async execute(client, guild) {
const queue = client.queue.get(guild.id);
queue.playing = false;
if (queue.endReason === "seek") {
return (queue.playing = true);
}
if (!queue.songLooping) {
if (queue.looping) {
queue.songs.push(queue.songs[0]);
}
queue.time = 0;
queue.votes = 0;
queue.voters = [];
if (queue.endReason !== "replay") {
if (queue.endReason === "previous")
queue.songs.unshift(queue.prevSongs.pop());
if (queue.endReason !== "previous")
queue.prevSongs.push(queue.songs.shift());
if (
client.global.db.guilds[guild.id].autoPlay &&
!queue.songs[0] &&
queue.endReason !== "stop"
) {
if (queue.prevSongs.length > 0)
return findSimilar(client, queue, queue.prevSongs, guild);
}
}
}
client.funcs.play(guild, queue.songs[0], client, 0, true);
},
};
function findSimilar(client, queue, prevSongs, guild) {
let retries = 0;
const query =
prevSongs[Math.floor(Math.random() * Math.floor(prevSongs.length))];
if (!query || !query.track) return findSimilar(client, queue, prevSongs, guild);
similarSongs.find({
title: query.track.name,
artist: query.track.artists[0].name,
limit: 10,
lastfmAPIKey: client.config.lastfm_api_key,
lastfmAPISecret: client.config.lastfm_secret,
youtubeAPIKey: client.config.youtube_api_key,
},
async function (err, songs) {
if (err) {
if (
err.message ==
'The request cannot be completed because you have exceeded your <a href="/youtube/v3/getting-started#quota">quota</a>.'
) {
queue.voiceChannel.leave();
queue.exists = false;
client.queue.delete(guild.id);
queue.textChannel.send(client.messages.quotaReached);
return;
}
console.log(err.message);
queue.voiceChannel.leave();
queue.exists = false;
client.queue.delete(guild.id);
return queue.textChannel.send(client.messages.error);
}
if (songs[0]) {
const random = Math.floor(Math.random() * Math.floor(songs.length));
const songInfo = await ytdl.getInfo(
`https://www.youtube.com/watch?v=${songs[random].youtubeId}`
);
queue.songs.push({
title: songInfo.videoDetails.title,
url: `https://www.youtube.com/watch?v=${songs[random].youtubeId}`,
author: client.user,
type: "ytdl",
info: songInfo.videoDetails,
track: query.track,
});
client.funcs.play(guild, queue.songs[0], client, 0, true);
} else {
if (prevSongs.length > 4 && retries < 6) {
findSimilar(client, queue, prevSongs, guild);
retries++;
return;
}
queue.textChannel.send(client.messages.noSimilarResults);
client.funcs.play(guild, queue.songs[0], client, 0, true);
}
}
);
}
+16
View File
@@ -0,0 +1,16 @@
module.exports = function (client, dispatcher, queue, guild) {
dispatcher.on("finish", () => {
if (client.config.devMode) console.log("Dispatcher finish.");
require("./finish").execute(client, guild);
})
.on("start", () => {
if (client.config.devMode) console.log("Dispatcher start.");
queue.endReason = null;
dispatcher.player.streamingData.pausedTime = 0;
})
.on("error", (error) => {
require("./error").execute(client, error, guild);
}).on("debug", (info) => {
if (client.config.devMode) console.log(info);
})
}
+34
View File
@@ -0,0 +1,34 @@
module.exports = function (client, msg, command) {
const queue = client.queue.get(msg.guild.id);
const permissions = msg.channel.permissionsFor(msg.author);
if (!queue || !queue.playing && command.name !== "stop") {
msg.channel.send(client.messages.noServerQueue);
return false;
}
if (msg.author.id !== client.config.devId) {
if (msg.member.voice.channel !== queue.voiceChannel) {
msg.channel.send(client.messages.wrongVoiceChannel);
return false;
}
if (client.global.db.guilds[msg.guild.id].permissions === true) {
if (client.global.db.guilds[msg.guild.id].dj) {
if (
!msg.member.roles.cache.has(
client.global.db.guilds[msg.guild.id].djrole
)
) {
msg.channel.send(client.messages.noDj);
return false;
} else return true;
} else if (!permissions.has(command.permission)) {
let message;
message = client.messages.noPerms.replace(
"%PERMS%",
command.permissions
);
msg.channel.send(message);
return false;
} else return true;
} else return true;
} else return true;
};
+52
View File
@@ -0,0 +1,52 @@
module.exports = async function (client) {
client.guilds.cache.forEach((guild) => {
if (!client.global.db.guilds[guild.id]) {
client.db.collection("guilds").doc(guild.id).set({
prefix: client.config.prefix,
defaultVolume: client.config.defaultVolume,
permissions: client.config.permissions,
dj: client.config.dj,
djrole: client.config.djrole,
startPlaying: client.config.startPlaying,
bass: client.config.bass,
blacklist: [],
premium: false,
autoPlay: client.config.autoPlay,
});
client.global.db.guilds[guild.id] = {
prefix: client.config.prefix,
defaultVolume: client.config.defaultVolume,
permissions: client.config.permissions,
dj: client.config.dj,
djrole: client.config.djrole,
startPlaying: client.config.startPlaying,
bass: client.config.bass,
blacklist: [],
premium: false,
autoPlay: client.config.autoPlay,
};
return;
}
if (!client.global.db.guilds[guild.id].prefix)
client.global.db.guilds[guild.id].prefix = client.config.prefix;
if (!client.global.db.guilds[guild.id].defaultVolume)
client.global.db.guilds[guild.id].defaultVolume =
client.config.defaultVolume;
if (!client.global.db.guilds[guild.id].permissions)
client.global.db.guilds[guild.id].permissions = client.config.permissions;
if (!client.global.db.guilds[guild.id].dj)
client.global.db.guilds[guild.id].dj = client.config.dj;
if (!client.global.db.guilds[guild.id].djrole)
client.global.db.guilds[guild.id].djrole = client.config.djrole;
if (!client.global.db.guilds[guild.id].startPlaying)
client.global.db.guilds[guild.id].startPlaying =
client.config.startPlaying;
if (!client.global.db.guilds[guild.id].bass)
client.global.db.guilds[guild.id].bass = client.config.bass;
if (!client.global.db.guilds[guild.id].blacklist)
client.global.db.guilds[guild.id].blacklist = [];
if (!client.global.db.guilds[guild.id].premium)
client.global.db.guilds[guild.id].premium = false;
if (!client.global.db.guilds[guild.id].autoPlay) client.global.db.guilds[guild.id].autoPlay = client.config.autoPlay
});
};
+22
View File
@@ -0,0 +1,22 @@
module.exports = async function (collection, doc, client) {
if (doc) {
let d = await client.db.collection(collection).doc(doc).get().catch(err => {
console.log('Error getting document', err);
return 'error';
});
return d.data();
} else {
let d = await client.db.collection(collection).get().catch(err => {
console.log('Error getting document', err);
return 'error';
});
let finalD = [];
d.forEach(doc => {
finalD.push({
id: doc.id,
d: doc.data(),
});
});
return finalD;
}
};
+12
View File
@@ -0,0 +1,12 @@
module.exports = async function (client, msg, pos, command) {
const seek = parseInt(pos);
const queue = client.queue.get(msg.guild.id);
if (command.name === "seek") {
queue.time = seek * 1000;
} else {
queue.time = queue.connection.dispatcher.streamTime + queue.time;
}
queue.connection.dispatcher.end();
queue.endReason = "seek";
client.funcs.play(msg.guild, queue.songs[0], client, seek, false);
};

Some files were not shown because too many files have changed in this diff Show More