Closed Quinten0508 closed 2 years ago
Please update to v0.3.0 and try again.
Note that because of a dependency change, 32-bit ARM is no longer supported. So you'll have to run your Pi in 64-bit mode (if possible) or use a different device.
Running my pi in 64 bit mode and completely nuked the container before reinstalling just in case. Running docker-compose up -d
now results in Pulling muse (codetheweb/muse:latest)... latest: Pulling from codetheweb/muse ERROR: no matching manifest for linux/arm/v7 in the manifest list entries
linux/arm/v7
is 32-bit so Docker isn't running in 64-bit mode. You might need to reinstall Docker. It should pull linux/arm64
.
Running uname -a
shows 64 bit, docker version
shows linux/arm, but it still tries to pull the 32 bit image. I'll try raspbian 64 bit tomorrow, seems like just enabling a 64 bit kernel doesn't do it for docker. Thanks for the help!
Update:
Hmm, could you try checking out 65dd43a (build Docker image locally from that or just run directly)? Won't solve your issue but should provide some additional context.
Run with the env var DEBUG=*
and see if anything pops up.
I don't fully understand, not that experienced yet 😅 How would I go about this?
Follow the instructions here: https://github.com/codetheweb/muse#nodejs
You'll need to install Node.js first if you haven't already, I recommend using v16 and something like nvm.
Thanks! Installed nvm and the latest Nodejs 16 LTS, got this when using yarn install
:
gyp ERR! System Linux 5.4.0-1048-raspi
gyp ERR! command "/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node" "/home/ubuntu/muse/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3-linux-arm64/node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3-linux-arm64" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=3" "--node_napi_label=napi-v3"
gyp ERR! cwd /home/ubuntu/muse/node_modules/sqlite3
gyp ERR! node -v v16.13.1
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node /home/ubuntu/muse/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3-linux-arm64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3-linux-arm64 --napi_version=8 --node_abi_napi=napi --napi_build_version=3 --node_napi_label=napi-v3' (1)
node-pre-gyp ERR! stack at ChildProcess.<anonymous> (/home/ubuntu/muse/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack at ChildProcess.emit (node:events:390:28)
node-pre-gyp ERR! stack at maybeClose (node:internal/child_process:1064:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5)
node-pre-gyp ERR! System Linux 5.4.0-1048-raspi
node-pre-gyp ERR! command "/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node" "/home/ubuntu/muse/node_modules/sqlite3/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /home/ubuntu/muse/node_modules/sqlite3
node-pre-gyp ERR! node -v v16.13.1
node-pre-gyp ERR! node-pre-gyp -v v0.11.0
node-pre-gyp ERR! not ok
Failed to execute '/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node /home/ubuntu/muse/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3-linux-arm64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3
Then running yarn build
fails:
yarn run v1.22.15
$ tsc
src/services/player.ts:56:7 - error TS2322: Type 'InternalDiscordGatewayAdapterCreator' is not assignable to type 'DiscordGatewayAdapterCreator'.
Types of parameters 'methods' and 'methods' are incompatible.
Type 'DiscordGatewayAdapterLibraryMethods' is not assignable to type 'InternalDiscordGatewayAdapterLibraryMethods'.
Types of property 'onVoiceStateUpdate' are incompatible.
Type '(data: import("/home/ubuntu/muse/node_modules/@discordjs/voice/node_modules/discord-api-types/payloads/v9/voice").GatewayVoiceState) => void' is not assignable to type '(data: import("/home/ubuntu/muse/node_modules/discord-api-types/payloads/v9/voice").GatewayVoiceState) => void'.
Types of parameters 'data' and 'data' are incompatible.
Type 'import("/home/ubuntu/muse/node_modules/discord-api-types/payloads/v9/voice").GatewayVoiceState' is not assignable to type 'import("/home/ubuntu/muse/node_modules/@discordjs/voice/node_modules/discord-api-types/payloads/v9/voice").GatewayVoiceState'.
Types of property 'member' are incompatible.
Type 'import("/home/ubuntu/muse/node_modules/discord-api-types/payloads/v9/guild").APIGuildMember | undefined' is not assignable to type 'import("/home/ubuntu/muse/node_modules/@discordjs/voice/node_modules/discord-api-types/payloads/v9/guild").APIGuildMember | undefined'.
Type 'import("/home/ubuntu/muse/node_modules/discord-api-types/payloads/v9/guild").APIGuildMember' is not assignable to type 'import("/home/ubuntu/muse/node_modules/@discordjs/voice/node_modules/discord-api-types/payloads/v9/guild").APIGuildMember'.
Types of property 'user' are incompatible.
Type 'import("/home/ubuntu/muse/node_modules/discord-api-types/payloads/v9/user").APIUser | undefined' is not assignable to type 'import("/home/ubuntu/muse/node_modules/@discordjs/voice/node_modules/discord-api-types/payloads/v9/user").APIUser | undefined'.
Type 'import("/home/ubuntu/muse/node_modules/discord-api-types/payloads/v9/user").APIUser' is not assignable to type 'import("/home/ubuntu/muse/node_modules/@discordjs/voice/node_modules/discord-api-types/payloads/v9/user").APIUser'.
Types of property 'flags' are incompatible.
Type 'import("/home/ubuntu/muse/node_modules/discord-api-types/payloads/v9/user").UserFlags | undefined' is not assignable to type 'import("/home/ubuntu/muse/node_modules/@discordjs/voice/node_modules/discord-api-types/payloads/v9/user").UserFlags | undefined'.
Type 'UserFlags.None' is not assignable to type 'UserFlags | undefined'.
56 adapterCreator: channel.guild.voiceAdapterCreator,
~~~~~~~~~~~~~~
node_modules/@discordjs/voice/dist/index.d.ts:1526:5
1526 adapterCreator: DiscordGatewayAdapterCreator;
~~~~~~~~~~~~~~
The expected type comes from property 'adapterCreator' which is declared here on type 'JoinVoiceChannelOptions & CreateVoiceConnectionOptions'
Found 1 error.
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
SQLite is no longer necessary as a dependency since migrating to Prisma, I just pushed a commit that removes it.
Try pulling and running yarn install
again.
Not sure why build is failing; maybe it's using a different version of Discord.js since yarn install
failed part way through?
Yes, sqlite is causing it to fail. Just cloned the repo again cause I was trying some other things to try and fix it too, still fails on sqlite somehow?
yarn install v1.22.15
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
info fsevents@2.3.2: The platform "linux" is incompatible with this module.
info "fsevents@2.3.2" is an optional dependency and failed compatibility check. Excluding it from installation.
[4/5] Linking dependencies...
[5/5] Building fresh packages...
[1/7] ⠐ @discordjs/opus
[7/7] ⠈ @prisma/client
[3/7] ⠈ sqlite3
[-/7] ⠈ waiting...
error /home/ubuntu/muse/node_modules/sqlite3: Command failed.
Exit code: 1
Command: node-pre-gyp install --fallback-to-build
Arguments:
Directory: /home/ubuntu/muse/node_modules/sqlite3
Output:
node-pre-gyp info it worked if it ends with ok
node-pre-gyp info using node-pre-gyp@0.11.0
node-pre-gyp info using node@16.13.1 | linux | arm64
node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp info check checked for "/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3-linux-arm64/node_sqlite3.node" (not found)
node-pre-gyp http GET https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v5.0.2/napi-v3-linux-arm64.tar.gz
node-pre-gyp http 403 https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v5.0.2/napi-v3-linux-arm64.tar.gz
node-pre-gyp WARN Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v5.0.2/napi-v3-linux-arm64.tar.gz
node-pre-gyp WARN Pre-built binaries not found for sqlite3@5.0.2 and node@16.13.1 (node-v93 ABI, glibc) (falling back to source compile with node-gyp)
node-pre-gyp http 403 status code downloading tarball https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v5.0.2/napi-v3-linux-arm64.tar.gz
gyp info it worked if it ends with ok
gyp info using node-gyp@3.8.0
gyp info using node@16.13.1 | linux | arm64
gyp info ok
gyp info it worked if it ends with ok
gyp info using node-gyp@3.8.0
gyp info using node@16.13.1 | linux | arm64
(node:171642) [DEP0150] DeprecationWarning: Setting process.config is deprecated. In the future the property will be read-only.
(Use `node --trace-deprecation ...` to show where the warning was created)
gyp info spawn /usr/bin/python2
gyp info spawn args [
gyp info spawn args '/home/ubuntu/muse/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'make',
gyp info spawn args '-I',
gyp info spawn args '/home/ubuntu/muse/node_modules/sqlite3/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/home/ubuntu/muse/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/home/ubuntu/.node-gyp/16.13.1/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/home/ubuntu/.node-gyp/16.13.1',
gyp info spawn args '-Dnode_gyp_dir=/home/ubuntu/muse/node_modules/node-gyp',
gyp info spawn args '-Dnode_lib_file=/home/ubuntu/.node-gyp/16.13.1/<(target_arch)/node.lib',
gyp info spawn args '-Dmodule_root_dir=/home/ubuntu/muse/node_modules/sqlite3',
gyp info spawn args '-Dnode_engine=v8',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'build',
gyp info spawn args '-Goutput_dir=.'
gyp info spawn args ]
gyp info ok
gyp info it worked if it ends with ok
gyp info using node-gyp@3.8.0
gyp info using node@16.13.1 | linux | arm64
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/ubuntu/muse/node_modules/sqlite3/build'
CC(target) Release/obj.target/nothing/../node-addon-api/nothing.o
AR(target) Release/obj.target/../node-addon-api/nothing.a
COPY Release/nothing.a
ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep Release/obj/gen/sqlite-autoconf-3340000/sqlite3.c
/bin/sh: 1: python: not found
make: *** [deps/action_before_build.target.mk:13: Release/obj/gen/sqlite-autoconf-3340000/sqlite3.c] Error 127
make: Leaving directory '/home/ubuntu/muse/node_modules/sqlite3/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/home/ubuntu/muse/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack at ChildProcess.emit (node:events:390:28)
gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12)
gyp ERR! System Linux 5.4.0-1048-raspi
gyp ERR! command "/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node" "/home/ubuntu/muse/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3-linux-arm64/node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3-linux-arm64" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=3" "--node_napi_label=napi-v3"
gyp ERR! cwd /home/ubuntu/muse/node_modules/sqlite3
gyp ERR! node -v v16.13.1
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node /home/ubuntu/muse/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3-linux-arm64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/home/ubuntu/muse/node_modules/sqlite3/lib/binding/napi-v3-linux-arm64 --napi_version=8 --node_abi_napi=napi --napi_build_version=3 --node_napi_label=napi-v3' (1)
node-pre-gyp ERR! stack at ChildProcess.<anonymous> (/home/ubuntu/muse/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack at ChildProcess.emit (node:events:390:28)
node-pre-gyp ERR! stack at maybeClose (node:internal/child_process:1064:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5)
node-pre-gyp ERR! System Linux 5.4.0-1048-raspi
node-pre-gyp ERR! command "/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node" "/home/ubuntu/muse/node_modules/sqlite3/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /home/ubuntu/muse/node_modules/sqlite3
node-pre-gyp ERR! node -v v16.13.1
node-pre-gyp ERR! node-pre-gyp -v v0.11.0
node-pre-gyp ERR! not ok
Failed to execute '/home/ubuntu/.nvm/versions/node/v16.13.1/bin/node /home/ubuntu/muse/node_modules/node-gyp/bin/node-gyp.js build
sqlite3 no longer appears in yarn.lock
, so if it's trying to be installed you must not have the latest code checked out. Try git pull
. What does git log
show?
git pull
gives Already up to date.
git log
has a huge output: https://hastebin.nl/QjpZNyf
Hmm, that looks right.
Try git status
to make sure there's no difference between your working directory and the latest commit? If package-lock.json
is showing up (maybe you did npm install
at some point), delete that.
git status
gives this:
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
There's no package-lock.json
present, never ran npm install.
Rebooted my raspberry pi, it seems to be gone now? Weird, must be some kind of caching going on. Either way, running yarn install
again now, might take a while.
Okay, yarn install
, yarn build
, and yarn start
all worked, but the bot still gives the same error when requesting to play a song. This is what it outputs when I send ?play https://www.youtube.com/watch?v=dQw4w9gXcQ
:
prisma:client:libraryEngine sending request, this.libraryStarted: true +187msh muse [WS => Shard 0] [HeartbeatTimer] Sending a heartbeat. +41s
prisma:client Prisma Client call: +36s
prisma:client prisma.setting.findUnique({
prisma:client where: {
prisma:client guildId: '713796245793144883'
prisma:client }
prisma:client }) +0ms
prisma:client Generated request: +1ms
prisma:client query {
prisma:client findUniqueSetting(where: {
prisma:client guildId: "713796245793144883"
prisma:client }) {
prisma:client guildId
prisma:client prefix
prisma:client channel
prisma:client finishedSetup
prisma:client playlistLimit
prisma:client createdAt
prisma:client updatedAt
prisma:client }
prisma:client }
prisma:client +0ms
prisma:client:libraryEngine sending request, this.libraryStarted: true +36s
muse [WS => Shard 0] Heartbeat acknowledged, latency of 99ms. +99ms
prisma:client Prisma Client call: +165ms
prisma:client prisma.setting.findUnique({
prisma:client where: {
prisma:client guildId: '713796245793144883'
prisma:client }
prisma:client }) +1ms
prisma:client Generated request: +0ms
prisma:client query {
prisma:client findUniqueSetting(where: {
prisma:client guildId: "713796245793144883"
prisma:client }) {
prisma:client guildId
prisma:client prefix
prisma:client channel
prisma:client finishedSetup
prisma:client playlistLimit
prisma:client createdAt
prisma:client updatedAt
prisma:client }
prisma:client }
prisma:client +0ms
prisma:client:libraryEngine sending request, this.libraryStarted: true +166ms
rebooted my pi a few hrs ago, now yarn build
spits out the error again. Found https://github.com/discordjs/voice/issues/166 with the same issue, will look into that.
It appears that something's weird on YouTube's side for https://www.youtube.com/watch?v=dQw4w9gXcQ
. It works in the web player, but asking the API for dQw4w9gXcQ
yields an empty / incorrect response. When sharing that video from the web player, it gives a different ID: dQw4w9WgXcQ
. That ID works using the API. The video URL is correct in Muse's help message (has ID dQw4w9WgXcQ
and the sample command works for me), so maybe you accidentally edited it when copying?
Does a free-form search like ?play cool music
work?
Just pushed 892c06a which fixes your compilation error.
None of the "play" commands work: spotify, search and youtube all give the same error (https://github.com/codetheweb/muse/commit/892c06a1109480ba581f99b09d55c929c9a37f0a did not change this). I checked network traffic and the freeform search does seem to do something in terms of network, but I'm unsure how to continue.
https://github.com/codetheweb/muse/commit/892c06a1109480ba581f99b09d55c929c9a37f0a did solve the build issue, no errors are shown now. yarn start
seems to work as before. Is there any verbosity I can add to yarn start
with parameters? Nothing new shows up in terminal when I issue a "play" command:
prisma:client:libraryEngine sending request, this.libraryStarted: true +357ms
muse [WS => Shard 0] [HeartbeatTimer] Sending a heartbeat. +41s
muse [WS => Shard 0] Heartbeat acknowledged, latency of 103ms. +103ms
prisma:client Prisma Client call: +1m
prisma:client prisma.setting.findUnique({
prisma:client where: {
prisma:client guildId: '713796245793144883'
prisma:client }
prisma:client }) +2ms
prisma:client Generated request: +0ms
prisma:client query {
prisma:client findUniqueSetting(where: {
prisma:client guildId: "713796245793144883"
prisma:client }) {
prisma:client guildId
prisma:client prefix
prisma:client channel
prisma:client finishedSetup
prisma:client playlistLimit
prisma:client createdAt
prisma:client updatedAt
prisma:client }
prisma:client }
prisma:client +0ms
prisma:client:libraryEngine sending request, this.libraryStarted: true +1m
prisma:client Prisma Client call: +179ms
prisma:client prisma.setting.findUnique({
prisma:client where: {
prisma:client guildId: '713796245793144883'
prisma:client }
prisma:client }) +1ms
prisma:client Generated request: +1ms
prisma:client query {
prisma:client findUniqueSetting(where: {
prisma:client guildId: "713796245793144883"
prisma:client }) {
prisma:client guildId
prisma:client prefix
prisma:client channel
prisma:client finishedSetup
prisma:client playlistLimit
prisma:client createdAt
prisma:client updatedAt
prisma:client }
prisma:client }
prisma:client +0ms
prisma:client:libraryEngine sending request, this.libraryStarted: true +181ms
muse [WS => Shard 0] [HeartbeatTimer] Sending a heartbeat. +41s
muse [WS => Shard 0] Heartbeat acknowledged, latency of 101ms. +101ms
Found that yarn start --verbose
displays a few more details (censored tokens/links/session id):
prisma:client:libraryEngine sending request, this.libraryStarted: true +10ms
superagent POST https://accounts.spotify.com/api/token +0ms
⠋ 📡 connecting to Discord... muse Provided token: token_here +57ms
muse Preparing to connect to the gateway... +0ms
muse No files needed to be evicted. Total size of the cache is currently 0 bytes, and the cache limit is 2000000000 bytes. +19ms
superagent POST https://accounts.spotify.com/api/token -> 200 +77ms
⠹ 📡 connecting to Discord... muse [WS => Manager] Fetched Gateway Information
muse URL: wss://gateway.discord.gg
muse Recommended Shards: 1 +197ms
muse [WS => Manager] Session Limit Information
muse Total: 1000
muse Remaining: 992 +1ms
muse [WS => Manager] Spawning shards: 0 +0ms
muse [WS => Shard 0] [CONNECT]
muse Gateway : wss://gateway.discord.gg/
muse Version : 9
muse Encoding : json
muse Compression: none +3ms
muse [WS => Shard 0] Setting a HELLO timeout for 20s. +1ms
⠼ 📡 connecting to Discord... muse [WS => Shard 0] [CONNECTED] Took 171ms +171ms
muse [WS => Shard 0] Clearing the HELLO timeout. +5ms
muse [WS => Shard 0] Setting a heartbeat interval for 41250ms. +0ms
muse [WS => Shard 0] [IDENTIFY] Shard 0/1 with intents: 12929 +1ms
⠧ 📡 connecting to Discord... muse [WS => Shard 0] [READY] Session session_id(?)_here. +233ms
muse [WS => Shard 0] [ReadyHeartbeat] Sending a heartbeat. +1ms
muse [WS => Shard 0] Shard received all its guilds. Marking as fully ready. +28ms
muse --------------------------------------------------
muse Core Dependencies
muse - @discordjs/voice: 0.7.4
muse - prism-media: 1.3.2
muse
muse Opus Libraries
muse - @discordjs/opus: 0.7.0
muse - opusscript: not found
muse
muse Encryption Libraries
muse - sodium: not found
muse - libsodium-wrappers: 0.7.9
muse - tweetnacl: not found
muse
muse FFmpeg
muse - version: 4.2.4-1ubuntu0.1
muse - libopus: yes
muse -------------------------------------------------- +9ms
✔ Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=client_id_here&scope=bot&permissions=36752448
Issuing a command to the bot in the discord server does not give any extra output, same as previous comment.
If DEBUG=*
is set (looks like it is) then any errors will be logged. I guess something is silently failing somewhere.
There might be bad values in the cache; can you pull and run yarn cache:clear-key-value
(just added that script) and then see if anything changes?
I already tried the built in yarn cache clear
without any success. pulled the two files, seems like the path to the .js file is absolute and doesn't work with my setup?
ubuntu@ubuntu:~/muse$ yarn cache:clear-key-value
yarn run v1.22.15
$ npm run env:set-database-url node dist/src/scripts/cache-clear-key-value.js
> muse@0.3.1 env:set-database-url
> node dist/src/scripts/run-with-database-url.js "node" "dist/src/scripts/cache-clear-key-value.js"
node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module '/home/ubuntu/muse/dist/src/scripts/cache-clear-key-value.js'
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
file:///home/ubuntu/muse/node_modules/execa/lib/error.js:59
error = new Error(message);
^
Error: Command failed with exit code 1: node dist/src/scripts/cache-clear-key-value.js
at makeError (file:///home/ubuntu/muse/node_modules/execa/lib/error.js:59:11)
at handlePromise (file:///home/ubuntu/muse/node_modules/execa/index.js:119:26)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///home/ubuntu/muse/dist/src/scripts/run-with-database-url.js:6:5 {
shortMessage: 'Command failed with exit code 1: node dist/src/scripts/cache-clear-key-value.js',
command: 'node dist/src/scripts/cache-clear-key-value.js',
escapedCommand: 'node "dist/src/scripts/cache-clear-key-value.js"',
exitCode: 1,
signal: undefined,
signalDescription: undefined,
stdout: undefined,
stderr: undefined,
failed: true,
timedOut: false,
isCanceled: false,
killed: false
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
yarn cache clear
refers to Yarn's cache, whereas the script I added deals with Muse's caching of API responses from YouTube and Spotify.
Should have clarified that you need to run yarn build
/ yarn build:watch
before running yarn cache:clear-key-value
.
Ahh, gotcha, just ran yarn cache:clear-key-value
:
ubuntu@ubuntu:~/muse$ yarn cache:clear-key-value
yarn run v1.22.15
$ npm run env:set-database-url node dist/src/scripts/cache-clear-key-value.js
> muse@0.3.1 env:set-database-url
> node dist/src/scripts/run-with-database-url.js "node" "dist/src/scripts/cache-clear-key-value.js"
prisma:tryLoadEnv Environment variables loaded from /home/ubuntu/muse/.env +0ms
prisma:tryLoadEnv Environment variables loaded from /home/ubuntu/muse/.env +11ms
prisma:client clientVersion: 3.7.0 +0ms
prisma:client clientEngineType: library +1ms
prisma:client:libraryEngine internalSetup +0ms
⠋ Clearing key value cache... prisma:client Prisma Client call: +82ms
prisma:client prisma.keyValueCache.deleteMany({}) +2ms
prisma:client Generated request: +0ms
prisma:client mutation {
prisma:client deleteManyKeyValueCache {
prisma:client count
prisma:client }
prisma:client }
prisma:client +0ms
prisma:client:libraryEngine sending request, this.libraryStarted: false +86ms
⠙ Clearing key value cache... prisma:client:libraryEngine Search for Query Engine Library in /home/ubuntu/muse/node_modules/.prisma/client +99ms
prisma:client:libraryEngine loadEngine using /home/ubuntu/muse/node_modules/.prisma/client/libquery_engine-linux-arm64-openssl-1.1.x.so.node +1ms
prisma:client:libraryEngine library starting +12ms
prisma:client:libraryEngine library started +24ms
✔ Key value cache cleared.
prisma:client:libraryEngine hookProcess received: beforeExit +6ms
prisma:client:libraryEngine runBeforeExit +0ms
prisma:client:libraryEngine hookProcess received: exit +1ms
Done in 2.97s.
Running yarn start
and then trying the play command again doesn't change anything. Sorry for not clarifying earlier: DEBUG=*
is still set, yes.
Not really sure what could be going on at this point. If nothing is being logged then something is silently failing but I don't see where that would be happening.
Has Muse ever worked for you?
Maybe some of the APIs are locked to specific regions. Are you in North America?
Muse has never worked for me, no. I'm in Europe. I can try running it in a docker container on a (non arm) windows machine in a bit to see if that helps.
Spotify and discord definitely aren't region locked, used them before. I don't see why google cloud would be either.
Update: Just finished setting up Docker on my Windows desktop, using WSL2 if that matters. Guess what: exact same problem. At this point I'm starting to think it's my home network or isp blocking some traffic?
Got Wireshark, when I use ?play cool song
, these two packets are sent:
463 16.238452 192.168.1.20 www.googleapis.com TCP 54 32892 → https(443) [RST, ACK] Seq=1075 Ack=1957 Win=0 Len=0
465 16.240693 www.googleapis.com 192.168.1.20 TCP 60 https(443) → 32892 [RST] Seq=1957 Win=0 Len=0
192.168.1.20 is my computer's local ip, googleapis should speak for itself. I can provide the csv or yaml files for each packet too if you want them
Running Muse without Docker on my Windows machine to see if that differs, but yarn build
errors out:
C:\Users\Quint\muse>yarn build
yarn run v1.22.17
$ tsc
src/commands/shortcuts.ts:45:37 - error TS7006: Parameter 'accum' implicitly has an 'any' type.
45 const res = shortcuts.reduce((accum, shortcut) => {
~~~~~
src/commands/shortcuts.ts:45:44 - error TS7006: Parameter 'shortcut' implicitly has an 'any' type.
45 const res = shortcuts.reduce((accum, shortcut) => {
~~~~~~~~
src/scripts/migrate-and-start.ts:35:33 - error TS2339: Property 'Prisma' does not exist on type 'typeof import("C:/Users/Quint/muse/node_modules/@prisma/client/index")'.
35 if (error instanceof Prisma.Prisma.PrismaClientKnownRequestError && error.code === 'P2010') {
~~~~~~
src/scripts/migrate-and-start.ts:35:73 - error TS2571: Object is of type 'unknown'.
35 if (error instanceof Prisma.Prisma.PrismaClientKnownRequestError && error.code === 'P2010') {
~~~~~
src/services/file-cache.ts:9:9 - error TS2305: Module '"@prisma/client"' has no exported member 'FileCache'.
9 import {FileCache} from '@prisma/client';
~~~~~~~~~
Found 5 errors.
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Unsure if this is related, just trying all different possible combos to see if it makes a difference
At this point I'm starting to think it's my home network or isp blocking some traffic?
Are you able to try using some kind of cellular hotspot to rule out your local network? I suppose it might be "silently" failing if network calls are timing out but Muse is exited before the default throw-if-timeout period.
Running Muse without Docker on my Windows machine to see if that differs, but yarn build errors out:
You might need to run yarn prisma generate
.
I tried it with mobile data using android usb tethering and tried a vpn, no success. How long is the default throw-if-timeout period?
Running yarn prisma generate
works, and so does yarn build
, but now yarn start
fails:
PS C:\Users\Quint\muse> yarn start
yarn run v1.22.17
$ npm run env:set-database-url -- node --experimental-json-modules dist/src/scripts/migrate-and-start.js
> muse@0.3.1 env:set-database-url
> node dist/src/scripts/run-with-database-url.js "node" "--experimental-json-modules" "dist/src/scripts/migrate-and-start.js"
(node:20668) ExperimentalWarning: Importing JSON modules is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
prisma:tryLoadEnv Environment variables loaded from C:\Users\Quint\muse\.env +0ms
prisma:tryLoadEnv Environment variables loaded from C:\Users\Quint\muse\.env +311ms
prisma:client clientVersion: 3.7.0 +0ms
prisma:client clientEngineType: library +0ms
prisma:client:libraryEngine internalSetup +0ms
prisma:tryLoadEnv Environment variables loaded from C:\Users\Quint\muse\.env +239ms
prisma:client clientVersion: 3.7.0 +238ms
prisma:client clientEngineType: library +0ms
prisma:client:libraryEngine internalSetup +238ms
========================================
========================================
================= muse =================
========================================
=========== Made with 🎶 by ============
==== https://github.com/codetheweb =====
========================================
========================================
Running version 0.3.1 built on unknown date (commit unknown)
🔧 Need help? https://github.com/codetheweb/muse/discussions/new
🐛 Bug? https://github.com/codetheweb/muse/issues/new
✨ New feature? https://github.com/codetheweb/muse/issues/new
☕ Discussion? https://github.com/codetheweb/muse/discussions/new
💰 Help me? https://www.paypal.me/codetheweb https://github.com/sponsors/codetheweb
⠋ Applying database migrations... prisma:client:libraryEngine Search for Query Engine Library in C:\Users\Quint\muse\node_modules\.prisma\client +10ms
prisma:client:libraryEngine Search for Query Engine Library in C:\Users\Quint\muse\node_modules\.prisma\client +0ms
prisma:client:libraryEngine loadEngine using C:\Users\Quint\muse\node_modules\.prisma\client\query_engine-windows.dll.node +1ms
prisma:client:libraryEngine loadEngine using C:\Users\Quint\muse\node_modules\.prisma\client\query_engine-windows.dll.node +6ms
✖ Failed to apply database migrations:
2022-01-08T21:33:21.352Z prisma:loadEnv project root found at C:\Users\Quint\muse\package.json
2022-01-08T21:33:21.365Z prisma:tryLoadEnv Environment variables loaded from C:\Users\Quint\muse\.env
2022-01-08T21:33:21.368Z prisma:engines binaries to download libquery-engine, migration-engine, introspection-engine, prisma-fmt
2022-01-08T21:33:21.657Z prisma:getConfig Using CLI Query Engine (Node-API Library) at: C:\Users\Quint\muse\node_modules\@prisma\engines\query_engine-windows.dll.node
2022-01-08T21:33:21.662Z prisma:getConfig Using CLI Query Engine (Node-API Library) at: C:\Users\Quint\muse\node_modules\@prisma\engines\query_engine-windows.dll.node
Error: Error: P1012: error: Error validating: This line is not a valid definition within a datasource.
--> schema.prisma:4
|
3 | provider = "sqlite"
4 | url = "file:C:\Users\Quint\muse\data/db.sqlite"
5 | }
|
at createDatabase (C:\Users\Quint\muse\node_modules\prisma\build\index.js:46942:19)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async ensureDatabaseExists (C:\Users\Quint\muse\node_modules\prisma\build\index.js:102138:9)
at async Object.parse (C:\Users\Quint\muse\node_modules\prisma\build\index.js:103332:28)
at async main (C:\Users\Quint\muse\node_modules\prisma\build\index.js:106430:18)
prisma:client:libraryEngine hookProcess received: exit +959ms
prisma:client:libraryEngine runBeforeExit +0ms
file:///C:/Users/Quint/muse/node_modules/execa/lib/error.js:59
error = new Error(message);
^
Error: Command failed with exit code 1: node --experimental-json-modules dist/src/scripts/migrate-and-start.js
at makeError (file:///C:/Users/Quint/muse/node_modules/execa/lib/error.js:59:11)
at handlePromise (file:///C:/Users/Quint/muse/node_modules/execa/index.js:119:26)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///C:/Users/Quint/muse/dist/src/scripts/run-with-database-url.js:6:5 {
shortMessage: 'Command failed with exit code 1: node --experimental-json-modules dist/src/scripts/migrate-and-start.js',
command: 'node --experimental-json-modules dist/src/scripts/migrate-and-start.js',
escapedCommand: 'node --experimental-json-modules "dist/src/scripts/migrate-and-start.js"',
exitCode: 1,
signal: undefined,
signalDescription: undefined,
stdout: undefined,
stderr: undefined,
failed: true,
timedOut: false,
isCanceled: false,
killed: false
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
I checked my router, no firewall/protection of any kind is active there. I disabled uwf on my pi as well just to test, didn't work. Last thing I can do is rent a vultr vps or something like it just to see if that does anything, but I don't expect anything.
Running yarn prisma generate works, and so does yarn build, but now yarn start fails:
Whoops, forgot to use path.join()
so database path generation works on Windows. Fixed in 21c9dee.
How long is the default throw-if-timeout period?
Would have to do some digging to find out (set by the API wrapper packages Muse uses rather than in Muse's codebase) but I doubt it's longer than 5 minutes.
@Quinten0508 were you ever able to make any headway on this?
Sorry, I've been extremely busy over the last few days. I've completely reinstalled muse w/o Docker on my windows machine just for good measure.
Same error is still given upon running yarn start
:
PS C:\Users\Quint\muse> yarn start
yarn run v1.22.17
$ npm run env:set-database-url -- node --experimental-json-modules dist/src/scripts/migrate-and-start.js
> muse@0.5.0 env:set-database-url
> node dist/src/scripts/run-with-database-url.js "node" "--experimental-json-modules" "dist/src/scripts/migrate-and-start.js"
(node:2384) ExperimentalWarning: Importing JSON modules is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
prisma:tryLoadEnv Environment variables loaded from C:\Users\Quint\muse\.env +0ms
prisma:tryLoadEnv Environment variables loaded from C:\Users\Quint\muse\.env +363ms
prisma:client clientVersion: 3.7.0 +0ms
prisma:client clientEngineType: library +0ms
prisma:client:libraryEngine internalSetup +0ms
prisma:tryLoadEnv Environment variables loaded from C:\Users\Quint\muse\.env +301ms
prisma:client clientVersion: 3.7.0 +300ms
prisma:client clientEngineType: library +0ms
prisma:client:libraryEngine internalSetup +300ms
========================================
========================================
================= muse =================
========================================
=========== Made with 🎶 by ============
==== https://github.com/codetheweb =====
========================================
========================================
Running version 0.5.0 built on unknown date (commit unknown)
🔧 Need help? https://github.com/codetheweb/muse/discussions/new
🐛 Bug? https://github.com/codetheweb/muse/issues/new
✨ New feature? https://github.com/codetheweb/muse/issues/new
☕ Discussion? https://github.com/codetheweb/muse/discussions/new
💰 Help me? https://www.paypal.me/codetheweb https://github.com/sponsors/codetheweb
⠋ Applying database migrations... prisma:client:libraryEngine Search for Query Engine Library in C:\Users\Quint\muse\node_modules\.prisma\client +11ms
prisma:client:libraryEngine Search for Query Engine Library in C:\Users\Quint\muse\node_modules\.prisma\client +0ms
prisma:client:libraryEngine loadEngine using C:\Users\Quint\muse\node_modules\.prisma\client\query_engine-windows.dll.node +1ms
prisma:client:libraryEngine loadEngine using C:\Users\Quint\muse\node_modules\.prisma\client\query_engine-windows.dll.node +7ms
✖ Failed to apply database migrations:
2022-01-25T16:11:15.411Z prisma:loadEnv project root found at C:\Users\Quint\muse\package.json
2022-01-25T16:11:15.423Z prisma:tryLoadEnv Environment variables loaded from C:\Users\Quint\muse\.env
2022-01-25T16:11:15.427Z prisma:engines binaries to download libquery-engine, migration-engine, introspection-engine, prisma-fmt
2022-01-25T16:11:15.707Z prisma:getConfig Using CLI Query Engine (Node-API Library) at: C:\Users\Quint\muse\node_modules\@prisma\engines\query_engine-windows.dll.node
2022-01-25T16:11:15.712Z prisma:getConfig Using CLI Query Engine (Node-API Library) at: C:\Users\Quint\muse\node_modules\@prisma\engines\query_engine-windows.dll.node
Error: Error: P1012: error: Error validating: This line is not a valid definition within a datasource.
--> schema.prisma:4
|
3 | provider = "sqlite"
4 | url = "file:C:\Users\Quint\muse\data\db.sqlite"
5 | }
|
at createDatabase (C:\Users\Quint\muse\node_modules\prisma\build\index.js:46942:19)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async ensureDatabaseExists (C:\Users\Quint\muse\node_modules\prisma\build\index.js:102138:9)
at async Object.parse (C:\Users\Quint\muse\node_modules\prisma\build\index.js:103332:28)
at async main (C:\Users\Quint\muse\node_modules\prisma\build\index.js:106430:18)
prisma:client:libraryEngine hookProcess received: exit +972ms
prisma:client:libraryEngine runBeforeExit +0ms
file:///C:/Users/Quint/muse/node_modules/execa/lib/error.js:59
error = new Error(message);
^
Error: Command failed with exit code 1: node --experimental-json-modules dist/src/scripts/migrate-and-start.js
at makeError (file:///C:/Users/Quint/muse/node_modules/execa/lib/error.js:59:11)
at handlePromise (file:///C:/Users/Quint/muse/node_modules/execa/index.js:119:26)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///C:/Users/Quint/muse/dist/src/scripts/run-with-database-url.js:6:5 {
shortMessage: 'Command failed with exit code 1: node --experimental-json-modules dist/src/scripts/migrate-and-start.js',
command: 'node --experimental-json-modules dist/src/scripts/migrate-and-start.js',
escapedCommand: 'node --experimental-json-modules "dist/src/scripts/migrate-and-start.js"',
exitCode: 1,
signal: undefined,
signalDescription: undefined,
stdout: undefined,
stderr: undefined,
failed: true,
timedOut: false,
isCanceled: false,
killed: false
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Perhaps it is the forward slash in the 2nd line here:
3 | provider = "sqlite"
4 | url = "file:C:\Users\Quint\muse\data/db.sqlite"
Windows usually only accepts backslashes "\" for paths and is very picky about what it accepts as a valid path. Interestingly, when I try to cd
into the data directory that contains db.sqlite
(as mentioned in the above snippet): cd : Cannot find path 'C:\Users\Quint\muse\data' because it does not exist.
.
Please also note that I don't have sqlite installed on my machine.
Perhaps it is the forward slash in the 2nd line here:
Did you modify this file at some point? It should look like
...
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
...
Please also note that I don't have sqlite installed on my machine.
It's installed via Yarn / NPM, so you don't need to worry about that.
Didn't modify any files, I completely removed the /muse directory and started over yesterday, so there's no chance it could've been changed. These are all the directories and files currently in /muse. Notice there is no /data folder. Scanning for a db.sqlite file reveals no such file exists on my entire pc even. What exact file are you talking about?
Sorry, my bad--didn't scroll down in your log. (I was referencing schema.prisma
.)
There doesn't seem to be an easy fix for it: https://github.com/prisma/prisma/issues/6472.
I would recommend running within Docker if possible, but I know Docker on Windows can be a little finicky.
I'm starting up a Docker container on my Windows machine now, running with WSL2 enabled inside of Docker. I don't have an x86 Linux machine at the moment.
The containerized bot does seem to "work" - as in it gets up and running and when I invite it to a server it gives the appropriate dm questions. I then joined a random public vc in the server, and asked the bot the default rick-roll play command, to which it replies:
u betcha (edited)
🚫 request failed with status code 400
Edit: I cannot seem to find the logs, the Docker dashboard gui does have a "logs" option for each container, but muse's one is completely empty.
Trying to play a song w/ Spotify gives 🚫 no songs found
- although having checked spotify's developer dashboard, the bot has been making requests during all this time.
Using the search function gives the same result as using a youtube link.
Hmm, does it give more info if you set DEBUG=*
again?
Spun up another x86 intel machine w/ debian 11 and a fresh install of docker, installed npm and ran the command listed, still does not seem to work although I am getting past the "applying database migrations" step now"
yarn run v1.22.15
$ npm run env:set-database-url -- node --experimental-json-modules dist/scripts/migrate-and-start.js
> muse@1.1.1 env:set-database-url
> node dist/scripts/run-with-database-url.js "node" "--experimental-json-modules" "dist/scripts/migrate-and-start.js"
========================================
========================================
================= muse =================
========================================
=========== Made with 🎶 by ============
==== https://github.com/codetheweb =====
========================================
========================================
Running version 1.1.1 built on Invalid Date (commit unknown)
🔧 Need help? https://github.com/codetheweb/muse/discussions/new
🐛 Bug? https://github.com/codetheweb/muse/issues/new
✨ New feature? https://github.com/codetheweb/muse/issues/new
☕ Discussion? https://github.com/codetheweb/muse/discussions/new
💰 Help me? https://www.paypal.me/codetheweb https://github.com/sponsors/codetheweb
✔ Database migrations applied.
⠏ 📡 updating commands in all guilds...file:///usr/app/node_modules/@discordjs/rest/dist/index.mjs:7
`)),q){let S=!u(this,c);S&&(g(this,c,new se),u(this,c).wait(),u(this,w).shift()),u(this,b)?.resolve(),g(this,b,null),await W(q,void 0,{ref:!1});let O,ie=new Promise(re=>O=re);g(this,b,{promise:ie,resolve:O}),S&&(await u(this,w).wait(),g(this,k,!0))}return this.runRequest(e,t,s,i,r)}else if(o.status>=500&&o.status<600){if(r!==this.manager.options.retries)return this.runRequest(e,t,s,i,++r);throw new B(o.statusText,o.constructor.name,o.status,a,t,i)}else{if(o.status>=400&&o.status<500){o.status===401&&this.manager.setToken(null);let p=await M(o);throw new D(p,"code"in p?p.code:p.error,o.status,a,t,i)}return null}}};w=new WeakMap,c=new WeakMap,b=new WeakMap,k=new WeakMap;var K=(r=>(r.Delete="delete",r.Get="get",r.Patch="patch",r.Post="post",r.Put="put",r))(K||{}),I,G=class extends ge{constructor(e){super();l(this,"globalRemaining");l(this,"globalDelay",null);l(this,"globalReset",-1);l(this,"hashes",new U);l(this,"handlers",new U);L(this,I,null);l(this,"hashTimer");l(this,"handlerTimer");l(this,"agent",null);l(this,"options");this.options={...x,...e},this.options.offset=Math.max(0,this.options.offset),this.globalRemaining=this.options.globalRequestsPerSecond,this.setupSweepers()}setupSweepers(){let e=t=>{if(t>144e5)throw new Error("Cannot set an interval greater than 4 hours")};this.options.hashSweepInterval!==0&&this.options.hashSweepInterval!==1/0&&(e(this.options.hashSweepInterval),this.hashTimer=setInterval(()=>{let t=new U,s=Date.now();this.hashes.sweep((i,r)=>{if(i.lastAccess===-1)return!1;let a=Math.floor(s-i.lastAccess)>this.options.hashLifetime;return a&&t.set(r,i),this.emit("restDebug",`Hash ${i.value} for ${r} swept due to lifetime being exceeded`),a}),this.emit("hashSweep",t)},this.options.hashSweepInterval).unref()),this.options.handlerSweepInterval!==0&&this.options.handlerSweepInterval!==1/0&&(e(this.options.handlerSweepInterval),this.handlerTimer=setInterval(()=>{let t=new U;this.handlers.sweep((s,i)=>{let{inactive:r}=s;return r&&t.set(i,s),this.emit("restDebug",`Handler ${s.id} for ${i} swept due to being inactive`),r}),this.emit("handlerSweep",t)},this.options.handlerSweepInterval).unref())}setToken(e){return g(this,I,e),this}async queueRequest(e){let t=G.generateRouteData(e.fullRoute,e.method),s=this.hashes.get(`${e.method}:${t.bucketRoute}`)??{value:`Global(${e.method}:${t.bucketRoute})`,lastAccess:-1},i=this.handlers.get(`${s.value}:${t.majorParameter}`)??this.createHandler(s.value,t.majorParameter),{url:r,fetchOptions:a}=this.resolveRequest(e);return i.queueRequest(t,r,a,{body:e.body,files:e.files})}createHandler(e,t){let s=new C(this,e,t);return this.handlers.set(s.id,s),s}resolveRequest(e){let{options:t}=this;this.agent??=t.api.startsWith("https")?new fe({...t.agent,keepAlive:!0}):new Re({...t.agent,keepAlive:!0});let s="";if(e.query){let o=e.query.toString();o!==""&&(s=`?${o}`)}let i={...this.options.headers,"User-Agent":`${Y} ${t.userAgentAppendix}`.trim()};if(e.auth!==!1){if(!u(this,I))throw new Error("Expected token to be set for this request, but none was present");i.Authorization=`${e.authPrefix??"Bot"} ${u(this,I)}`}e.reason?.length&&(i["X-Audit-Log-Reason"]=encodeURIComponent(e.reason));let r=`${t.api}${e.versioned===!1?"":`/v${t.version}`}${e.fullRoute}${s}`,a,m={};if(e.files?.length){let o=new he;for(let[d,y]of e.files.entries())o.append(y.key??`files[${d}]`,y.fileData,y.fileName);if(e.body!=null)if(e.appendToFormData)for(let[d,y]of Object.entries(e.body))o.append(d,y);else o.append("payload_json",JSON.stringify(e.body));a=o,m=o.getHeaders()}else e.body!=null&&(e.passThroughBody?a=e.body:(a=JSON.stringify(e.body),m={"Content-Type":"application/json"}));let E={agent:this.agent,body:a,headers:{...e.headers??{},...m,...i},method:e.method};return{url:r,fetchOptions:E}}clearHashSweeper(){clearInterval(this.hashTimer)}clearHandlerSweeper(){clearInterval(this.handlerTimer)}static generateRouteData(e,t){let i=/^\/(?:channels|guilds|webhooks)\/(\d{16,19})/.exec(e)?.[1]??"global",r=e.replace(/\d{16,19}/g,":id").replace(/\/reactions\/(.*)/,"/reactions/:reaction"),a="";if(t==="delete"&&r==="/channels/:id/messages/:id"){let m=/\d{16,19}$/.exec(e)[0],E=de.deconstruct(m);Date.now()-Number(E.timestamp)>1e3*60*60*24*14&&(a+="/Delete Old Message")}return{majorParameter:i,bucketRoute:r+a,original:e}}},F=G;I=new WeakMap;import{EventEmitter as be}from"node:events";var ye=class extends be{constructor(e={}){super();l(this,"cdn");l(this,"requestManager");this.cdn=new N(e.cdn??x.cdn),this.requestManager=new F(e).on("restDebug",this.emit.bind(this,"restDebug")).on("rateLimited",this.emit.bind(this,"rateLimited")).on("invalidRequestWarning",this.emit.bind(this,"invalidRequestWarning")).on("hashSweep",this.emit.bind(this,"hashSweep")),this.on("newListener",(t,s)=>{(t==="request"||t==="response")&&this.requestManager.on(t,s)}),this.on("removeListener",(t,s)=>{(t==="request"||t==="response")&&this.requestManager.off(t,s)})}setToken(e){return this.requestManager.setToken(e),this}get(e,t={}){return this.request({...t,fullRoute:e,method:"get"})}delete(e,t={}){return this.request({...t,fullRoute:e,method:"delete"})}post(e,t={}){return this.request({...t,fullRoute:e,method:"post"})}put(e,t={}){return this.request({...t,fullRoute:e,method:"put"})}patch(e,t={}){return this.request({...t,fullRoute:e,method:"patch"})}request(e){return this.requestManager.queueRequest(e)}};export{ee as ALLOWED_EXTENSIONS,_ as ALLOWED_SIZES,te as ALLOWED_STICKER_EXTENSIONS,N as CDN,x as DefaultRestOptions,Y as DefaultUserAgent,D as DiscordAPIError,B as HTTPError,ye as REST,j as RESTEvents,A as RateLimitError,F as RequestManager,K as RequestMethod};
^
D[50001]: Missing Access
at C.runRequest (file:///usr/app/node_modules/@discordjs/rest/dist/index.mjs:7:557)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async C.queueRequest (file:///usr/app/node_modules/@discordjs/rest/dist/index.mjs:5:3022)
at async file:///usr/app/dist/bot.js:126:25
at async Promise.all (index 0)
at async Client.<anonymous> (file:///usr/app/dist/bot.js:124:17) {
rawError: { message: 'Missing Access', code: 50001 },
code: 50001,
status: 403,
method: 'put',
url: 'https://discord.com/api/v9/applications/928282471668273153/guilds/713796245793144883/commands',
requestBody: {
files: undefined,
json: [
{
name: 'clear',
description: 'clears all songs in queue except currently playing song',
options: [],
default_permission: undefined
},
{
name: 'config',
description: 'configure bot settings',
options: [
{
type: 1,
name: 'set-playlist-limit',
description: 'set the maximum number of tracks that can be added from a playlist',
options: [Array]
},
{
type: 1,
name: 'set-role',
description: 'set the role that is allowed to use the bot',
options: [Array]
},
{
type: 1,
name: 'set-wait-after-queue-empties',
description: 'set the time to wait before leaving the voice channel when queue empties',
options: [Array]
},
{
type: 1,
name: 'set-leave-if-no-listeners',
description: 'set whether to leave when all other participants leave',
options: [Array]
},
{
type: 1,
name: 'get',
description: 'show all settings',
options: []
}
],
default_permission: undefined
},
{
name: 'disconnect',
description: 'pause and disconnect Muse',
options: [],
default_permission: undefined
},
{
name: 'favorites',
description: 'add a song to your favorites',
options: [
{
type: 1,
name: 'use',
description: 'use a favorite',
options: [Array]
},
{
type: 1,
name: 'list',
description: 'list all favorites',
options: []
},
{
type: 1,
name: 'create',
description: 'create a new favorite',
options: [Array]
},
{
type: 1,
name: 'remove',
description: 'remove a favorite',
options: [Array]
}
],
default_permission: undefined
},
{
name: 'fseek',
description: 'seek forward in the current song',
options: [
{
max_value: undefined,
min_value: undefined,
choices: undefined,
autocomplete: undefined,
type: 10,
name: 'seconds',
description: 'the number of seconds to skip forward',
required: true
}
],
default_permission: undefined
},
{
name: 'pause',
description: 'pause the current song',
options: [],
default_permission: undefined
},
{
name: 'play',
description: 'play a song or resume playback',
options: [
{
choices: undefined,
autocomplete: true,
type: 3,
name: 'query',
description: 'YouTube URL, Spotify URL, or search query',
required: false
},
{
name: 'immediate',
description: 'add track to the front of the queue',
required: false,
type: 5
},
{
name: 'shuffle',
description: "shuffle the input if you're adding multiple tracks",
required: false,
type: 5
}
],
default_permission: undefined
},
{
name: 'queue',
description: 'show the current queue',
options: [
{
max_value: undefined,
min_value: undefined,
choices: undefined,
autocomplete: undefined,
type: 4,
name: 'page',
description: 'page of queue to show [default: 1]',
required: false
}
],
default_permission: undefined
},
{
name: 'remove',
description: 'remove songs from the queue',
options: [
{
max_value: undefined,
min_value: undefined,
choices: undefined,
autocomplete: undefined,
type: 4,
name: 'position',
description: 'position of the song to remove [default: 1]',
required: false
},
{
max_value: undefined,
min_value: undefined,
choices: undefined,
autocomplete: undefined,
type: 4,
name: 'range',
description: 'number of songs to remove [default: 1]',
required: false
}
],
default_permission: undefined
},
{
name: 'seek',
description: 'seek to a position from beginning of song',
options: [
{
choices: undefined,
autocomplete: undefined,
type: 3,
name: 'time',
description: 'time to seek',
required: true
}
],
default_permission: undefined
},
{
name: 'shuffle',
description: 'shuffle the current queue',
options: [],
default_permission: undefined
},
{
name: 'skip',
description: 'skip the next songs',
options: [
{
max_value: undefined,
min_value: undefined,
choices: undefined,
autocomplete: undefined,
type: 4,
name: 'number',
description: 'number of songs to skip [default: 1]',
required: false
}
],
default_permission: undefined
},
{
name: 'unskip',
description: 'go back in the queue by one song',
options: [],
default_permission: undefined
}
]
}
}
file:///usr/app/node_modules/execa/lib/error.js:59
error = new Error(message);
^
Error: Command failed with exit code 1: node --experimental-json-modules dist/scripts/migrate-and-start.js
at makeError (file:///usr/app/node_modules/execa/lib/error.js:59:11)
at handlePromise (file:///usr/app/node_modules/execa/index.js:119:26)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///usr/app/dist/scripts/run-with-database-url.js:5:5 {
shortMessage: 'Command failed with exit code 1: node --experimental-json-modules dist/scripts/migrate-and-start.js',
command: 'node --experimental-json-modules dist/scripts/migrate-and-start.js',
escapedCommand: 'node --experimental-json-modules "dist/scripts/migrate-and-start.js"',
exitCode: 1,
signal: undefined,
signalDescription: undefined,
stdout: undefined,
stderr: undefined,
failed: true,
timedOut: false,
isCanceled: false,
killed: false
}
npm notice
npm notice New minor version of npm available! 8.1.0 -> 8.5.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.5.0
npm notice Run npm install -g npm@8.5.0 to update!
npm notice
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Got it to work by kicking my bot from all servers, then re-running the server. However, using a youtube URL or search query gives 🚫 ope: Request failed with status code 403
and using a spotify URL gives 🚫 ope: no songs found
. Portainer's logs do not show anything. Will try again w/o docker in a few hrs so I can set DEBUG=*
Ran Muse with DEBUG=* set in the .env file. This was run w/o docker, still on the same machine (amd64, Debian GNU/Linux 11 (bullseye) x86_64, Intel Celeron 847 (2) @ 1.100GHz, 4GB RAM). Here's a hastebin link, my original comment contained 5x the maximum char count: https://hastebin.nl/nYB4Q0u
It looks like all the YouTube queries are returning 403s, so I'd double check your Google API key and make sure it has access to YouTube APIs (check the README for details).
Right, I created a new project following the README and now it does seem to work! Thank you!
Glad you got it working!
Running the bot in a Docker container on a raspberry pi (ARM 32-bit).
The bot starts up fine and the setup works, but as soon as I try to use the
play
command it always replies withthat doesn't exist
and does not play a song or add it to the queue. Here is a screenshot of the error message: