1
0
mirror of https://github.com/musix-org/musix-oss synced 2025-09-04 02:13:21 +00:00

491 Commits

Author SHA1 Message Date
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 3091 additions and 1533 deletions

2
.gitignore vendored
View File

@@ -1,4 +1,4 @@
node_modules
.env
.vscode
node_modules
serviceAccount.json

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;
}
}
};

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/

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

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

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] });
}
};

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] });
}
};

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!');
}
}
};

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] });
}
};

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.');
}
};

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);
}
}
};

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!");
},
};

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!');
}
};

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.');
}
};

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] });
}
};

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!')
}
};

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!');
}
};

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!");
}
};

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] });
}
}
};

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);
}
};

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!');
}
};

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!');
}
}
};

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] });
}
},
};

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`!');
}
}
};

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)');
}
};

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]}\``);
}
};

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!');
}
};

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`');
}
}
};

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!")
}
}
}
};

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`');
}
}
};

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]}\``);
}
};

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;
}
}
};

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);
}
};

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] });
}
};

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!')
}
};

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}**`);
}
};

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"
}

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
};
}
}
}

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);
}
}

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);
}
}
}

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;
}
};

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);
}
};

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;
}

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}`;
}

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;
}

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);
};

780
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,32 +1,37 @@
{
"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.21.0",
"@discordjs/voice": "^0.18.0",
"@discordjs/opus": "^0.10.0",
"dotenv": "^17.2.1",
"firebase": "^12.0.0",
"firebase-admin": "^13.4.0",
"discord-webhook-node": "^1.1.8",
"discord.js": "^14.22.1",
"dotenv": "^17.2.2",
"firebase": "^12.2.1",
"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.10"

14
src/bot.js Normal file
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
src/client.js Normal file
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
src/commands/bass.js Normal file
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
src/commands/help.js Normal file
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
src/commands/invite.js Normal file
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
src/commands/loop.js Normal file
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
src/commands/loopsong.js Normal file
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
src/commands/lyrics.js Normal file
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
src/commands/nightcore.js Normal file
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);
}
},
};

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
src/commands/pause.js Normal file
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
src/commands/play.js Normal file
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
src/commands/previous.js Normal file
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
src/commands/queue.js Normal file
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
src/commands/remove.js Normal file
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
src/commands/replay.js Normal file
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
src/commands/resume.js Normal file
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
src/commands/search.js Normal file
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
src/commands/seek.js Normal file
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
src/commands/settings.js Normal file
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);
}
},
};

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);
}
};

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);
}
};

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}!`);
}
};

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;
}
},
};

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);
}
};

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]}\``);
}
};

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);
}
},
};

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);
}
};

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);
}
}
};

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
src/commands/shuffle.js Normal file
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
src/commands/skip.js Normal file
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
src/commands/skipto.js Normal file
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
src/commands/status.js Normal file
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
src/commands/stop.js Normal file
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
src/commands/volume.js Normal file
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
src/config/config.js Normal file
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
src/config/messages.js Normal file
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!",
};

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,
};
},
};

View File

@@ -0,0 +1,6 @@
module.exports = {
name: "guildcreate",
async execute(client, guild) {
delete client.global.db.guilds[guild.id];
},
};

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}`);
});
}

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);
}

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);
},
};

View File

@@ -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);
}
}
}

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}`);
})
}

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}\``);
},
};

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);
}
}
);
}

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
src/funcs/check.js Normal file
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
src/funcs/checkDB.js Normal file
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
src/funcs/dbget.js Normal file
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
src/funcs/end.js Normal file
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