Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DiscordAPIError[50006]: Cannot send an empty message #1051

Closed
1 task done
DeadlyVirez opened this issue Jul 23, 2024 · 4 comments · May be fixed by #1183
Closed
1 task done

DiscordAPIError[50006]: Cannot send an empty message #1051

DeadlyVirez opened this issue Jul 23, 2024 · 4 comments · May be fixed by #1183
Labels

Comments

@DeadlyVirez
Copy link

DeadlyVirez commented Jul 23, 2024

What's happening?
After playing a song, the bot crashes and thus ignores any wait time until leaving the voice channel.

Logs

muse-1  | 2024-07-23T19:07:18.402Z prisma:client:libraryEngine  sending request, this.libraryStarted: true
muse-1  | 2024-07-23T19:07:18.644Z muse [VOICE] received voice state update: {"member":{"user":{"username":"Muse","public_flags":0,"id":"1139227801912889394","global_name":null,"display_name":null,"discriminator":"6772","clan":null,"bot":true,"avatar_decoration_data":null,"avatar":"9d438f14376318d34f4734cf1fd06c59"},"roles":["1139232055100706979"],"premium_since":null,"pending":false,"nick":null,"mute":false,"joined_at":"2023-08-10T16:21:27.910000+00:00","flags":0,"deaf":false,"communication_disabled_until":null,"banner":null,"avatar":null},"user_id":"1139227801912889394","suppress":false,"session_id":"df81ca5c2bc7accd470eab198cc91b8f","self_video":false,"self_mute":false,"self_deaf":true,"request_to_speak_timestamp":null,"mute":false,"guild_id":"180816944570695680","deaf":false,"channel_id":"230394468233117697"}
muse-1  | 2024-07-23T19:07:18.645Z prisma:client  Prisma Client call:
muse-1  | 2024-07-23T19:07:18.645Z prisma:client  prisma.setting.findUnique({
muse-1  |   where: {
muse-1  |     guildId: '180816944570695680'
muse-1  |   }
muse-1  | })
muse-1  | 2024-07-23T19:07:18.645Z prisma:client  Generated request:
muse-1  | 2024-07-23T19:07:18.646Z prisma:client  query {
muse-1  |   findUniqueSetting(where: {
muse-1  |     guildId: "180816944570695680"
muse-1  |   }) {
muse-1  |     guildId
muse-1  |     playlistLimit
muse-1  |     secondsToWaitAfterQueueEmpties
muse-1  |     leaveIfNoListeners
muse-1  |     queueAddResponseEphemeral
muse-1  |     autoAnnounceNextSong
muse-1  |     defaultVolume
muse-1  |     createdAt
muse-1  |     updatedAt
muse-1  |   }
muse-1  | }
muse-1  |
muse-1  | 2024-07-23T19:07:18.646Z prisma:client:libraryEngine  sending request, this.libraryStarted: true
muse-1  | 2024-07-23T19:07:18.730Z muse [VOICE] received voice server: {"t":"VOICE_SERVER_UPDATE","s":7,"op":0,"d":{"token":"98be429a7a586efb","guild_id":"180816944570695680","endpoint":"frankfurt10023.discord.media:443"}}
muse-1  | 2024-07-23T19:07:18.747Z muse Spawned ffmpeg with ffmpeg -to 81 -i /data/cache/448a0ff9c7c66d2a2319a8d2170fba00e635eb3b32601557096c02371a2d4b518167893028839f7aad05a7a001ee37b39e20076ad642e019606e9b979b2e4eb6 -acodec libopus -vn -f webm -filter:a volume=1 pipe:1
muse-1  | 2024-07-23T19:07:39.554Z muse [WS => Shard 0] Heartbeat acknowledged, latency of 146ms.
muse-1  | 2024-07-23T19:08:20.791Z muse [WS => Shard 0] Heartbeat acknowledged, latency of 132ms.
muse-1  | 2024-07-23T19:08:39.814Z prisma:client  Prisma Client call:
muse-1  | 2024-07-23T19:08:39.814Z prisma:client  prisma.setting.findUnique({
muse-1  |   where: {
muse-1  |     guildId: '180816944570695680'
muse-1  |   }
muse-1  | })
muse-1  | 2024-07-23T19:08:39.814Z prisma:client  Generated request:
muse-1  | 2024-07-23T19:08:39.814Z prisma:client  query {
muse-1  |   findUniqueSetting(where: {
muse-1  |     guildId: "180816944570695680"
muse-1  |   }) {
muse-1  |     guildId
muse-1  |     playlistLimit
muse-1  |     secondsToWaitAfterQueueEmpties
muse-1  |     leaveIfNoListeners
muse-1  |     queueAddResponseEphemeral
muse-1  |     autoAnnounceNextSong
muse-1  |     defaultVolume
muse-1  |     createdAt
muse-1  |     updatedAt
muse-1  |   }
muse-1  | }
muse-1  |
muse-1  | 2024-07-23T19:08:39.814Z prisma:client:libraryEngine  sending request, this.libraryStarted: true
muse-1  | 2024-07-23T19:08:39.816Z prisma:client  Prisma Client call:
muse-1  | 2024-07-23T19:08:39.816Z prisma:client  prisma.setting.findUnique({
muse-1  |   where: {
muse-1  |     guildId: '180816944570695680'
muse-1  |   }
muse-1  | })
muse-1  | 2024-07-23T19:08:39.816Z prisma:client  Generated request:
muse-1  | 2024-07-23T19:08:39.816Z prisma:client  query {
muse-1  |   findUniqueSetting(where: {
muse-1  |     guildId: "180816944570695680"
muse-1  |   }) {
muse-1  |     guildId
muse-1  |     playlistLimit
muse-1  |     secondsToWaitAfterQueueEmpties
muse-1  |     leaveIfNoListeners
muse-1  |     queueAddResponseEphemeral
muse-1  |     autoAnnounceNextSong
muse-1  |     defaultVolume
muse-1  |     createdAt
muse-1  |     updatedAt
muse-1  |   }
muse-1  | }
muse-1  |
muse-1  | 2024-07-23T19:08:39.816Z prisma:client:libraryEngine  sending request, this.libraryStarted: true
muse-1  | 2024-07-23T19:08:40.072Z prisma:client:libraryEngine:exitHooks  exit event received: 1
muse-1  | /usr/app/node_modules/discord.js/node_modules/@discordjs/rest/src/lib/handlers/Shared.ts:152
muse-1  |                       throw new DiscordAPIError(data, 'code' in data ? data.code : data.error, status, method, url, requestData);
muse-1  |                             ^
muse-1  |
muse-1  |
muse-1  | DiscordAPIError[50006]: Cannot send an empty message
muse-1  |     at handleErrors (/usr/app/node_modules/discord.js/node_modules/@discordjs/rest/src/lib/handlers/Shared.ts:152:10)
muse-1  |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
muse-1  |     at SequentialHandler.runRequest (/usr/app/node_modules/discord.js/node_modules/@discordjs/rest/src/lib/handlers/SequentialHandler.ts:399:20)
muse-1  |     at SequentialHandler.queueRequest (/usr/app/node_modules/discord.js/node_modules/@discordjs/rest/src/lib/handlers/SequentialHandler.ts:169:11)
muse-1  |     at REST.request (/usr/app/node_modules/discord.js/node_modules/@discordjs/rest/src/lib/REST.ts:343:20)
muse-1  |     at async VoiceChannel.send (/usr/app/node_modules/discord.js/src/structures/interfaces/TextBasedChannel.js:162:15)
muse-1  |     at default.onAudioPlayerIdle (/usr/app/src/services/player.ts:591:9) {
muse-1  |   requestBody: {
muse-1  |     files: [],
muse-1  |     json: {
muse-1  |       content: undefined,
muse-1  |       tts: false,
muse-1  |       nonce: undefined,
muse-1  |       embeds: [],
muse-1  |       components: undefined,
muse-1  |       username: undefined,
muse-1  |       avatar_url: undefined,
muse-1  |       allowed_mentions: undefined,
muse-1  |       flags: undefined,
muse-1  |       message_reference: undefined,
muse-1  |       attachments: undefined,
muse-1  |       sticker_ids: undefined,
muse-1  |       thread_name: undefined
muse-1  |     }
muse-1  |   },
muse-1  |   rawError: { message: 'Cannot send an empty message', code: 50006 },
muse-1  |   code: 50006,
muse-1  |   status: 400,
muse-1  |   method: 'POST',
muse-1  |   url: 'https://discord.com/api/v10/channels/230394468233117697/messages'
muse-1  | }
muse-1  |
muse-1  | Node.js v18.20.4
muse-1 exited with code 1

Runtime
I'm running Muse:

  • Inside a Docker container

Versions

  • Muse: 2.9.0
  • Docker (if applicable): 27.0.3
  • OS: Ubuntu 24.04 LTS
@codetheweb
Copy link
Collaborator

Please upgrade to v2.9.1 and see if it's fixed. If not, feel free to re-open.

@thehackedone
Copy link

Having this issue on the latest build

@pokewizardSAM
Copy link

same here Issue also appears sometimes when the announce next is turned on. I am on the latest version too

 +1ms
  prisma:client:libraryEngine  sending request, this.libraryStarted: true +12ms
  muse Spawned ffmpeg with ffmpeg -to 68 -i /home/sam/muse-env/muse/data/cache/74143cb5c5197de1e867a4dae10fb3ac4c6346151e31971c6049f4dda57583dc35267d00d76cd616efdba37bce83b4a804f14bfde0cea564f07853b51d9b64d0 -acodec libopus -vn -f webm -filter:a volume=1 pipe:1 +8s
  prisma:client  Prisma Client call: +85ms
  prisma:client  prisma.setting.findUnique({
  where: {
    guildId: '1316370152819916800'
  }
}) +2ms
  prisma:client  Generated request: +1ms
  prisma:client  query {
  findUniqueSetting(where: {
    guildId: "1316370152819916800"
  }) {
    guildId
    playlistLimit
    secondsToWaitAfterQueueEmpties
    leaveIfNoListeners
    queueAddResponseEphemeral
    autoAnnounceNextSong
    defaultVolume
    defaultQueuePageSize
    turnDownVolumeWhenPeopleSpeak
    turnDownVolumeWhenPeopleSpeakTarget
    createdAt
    updatedAt
  }
}
 +2ms
  prisma:client:libraryEngine  sending request, this.libraryStarted: true +91ms
  muse [WS => Shard 0] Heartbeat acknowledged, latency of 305ms. +33s
  prisma:client  Prisma Client call: +1m
  prisma:client  prisma.setting.findUnique({
  where: {
    guildId: '1316370152819916800'
  }
}) +1ms
  prisma:client  Generated request: +1ms
  prisma:client  query {
  findUniqueSetting(where: {
    guildId: "1316370152819916800"
  }) {
    guildId
    playlistLimit
    secondsToWaitAfterQueueEmpties
    leaveIfNoListeners
    queueAddResponseEphemeral
    autoAnnounceNextSong
    defaultVolume
    defaultQueuePageSize
    turnDownVolumeWhenPeopleSpeak
    turnDownVolumeWhenPeopleSpeakTarget
    createdAt
    updatedAt
  }
}
 +0ms
  prisma:client:libraryEngine  sending request, this.libraryStarted: true +1m
  prisma:client  Prisma Client call: +9ms
  prisma:client  prisma.setting.findUnique({
  where: {
    guildId: '1316370152819916800'
  }
}) +1ms
  prisma:client  Generated request: +0ms
  prisma:client  query {
  findUniqueSetting(where: {
    guildId: "1316370152819916800"
  }) {
    guildId
    playlistLimit
    secondsToWaitAfterQueueEmpties
    leaveIfNoListeners
    queueAddResponseEphemeral
    autoAnnounceNextSong
    defaultVolume
    defaultQueuePageSize
    turnDownVolumeWhenPeopleSpeak
    turnDownVolumeWhenPeopleSpeakTarget
    createdAt
    updatedAt
  }
}
 +1ms
  prisma:client:libraryEngine  sending request, this.libraryStarted: true +10ms
  prisma:client:libraryEngine:exitHooks  exit event received: 1 +0ms
/home/sam/muse-env/muse/node_modules/discord.js/node_modules/@discordjs/rest/dist/index.js:640
      throw new DiscordAPIError(data, "code" in data ? data.code : data.error, status, method, url, requestData);
            ^

DiscordAPIError[50006]: Cannot send an empty message
    at handleErrors (/home/sam/muse-env/muse/node_modules/discord.js/node_modules/@discordjs/rest/dist/index.js:640:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async SequentialHandler.runRequest (/home/sam/muse-env/muse/node_modules/discord.js/node_modules/@discordjs/rest/dist/index.js:1021:23)
    at async SequentialHandler.queueRequest (/home/sam/muse-env/muse/node_modules/discord.js/node_modules/@discordjs/rest/dist/index.js:862:14)
    at async REST.request (/home/sam/muse-env/muse/node_modules/discord.js/node_modules/@discordjs/rest/dist/index.js:1387:22)
    at async VoiceChannel.send (/home/sam/muse-env/muse/node_modules/discord.js/src/structures/interfaces/TextBasedChannel.js:162:15)
    at async player_default.onAudioPlayerIdle (file:///home/sam/muse-env/muse/src/services/player.ts:1:11409) {
  requestBody: {
    files: [],
    json: {
      content: undefined,
      tts: false,
      nonce: undefined,
      embeds: [],
      components: undefined,
      username: undefined,
      avatar_url: undefined,
      allowed_mentions: undefined,
      flags: undefined,
      message_reference: undefined,
      attachments: undefined,
      sticker_ids: undefined,
      thread_name: undefined
    }
  },
  rawError: { message: 'Cannot send an empty message', code: 50006 },
  code: 50006,
  status: 400,
  method: 'POST',
  url: 'https://discord.com/api/v10/channels/1316370152819916804/messages'
}

Node.js v18.20.5
file:///home/sam/muse-env/muse/node_modules/execa/lib/error.js:59
                error = new Error(message);
                        ^

Error: Command failed with exit code 1: tsx src/scripts/migrate-and-start.ts
    at makeError (file:///home/sam/muse-env/muse/node_modules/execa/lib/error.js:59:11)
    at handlePromise (file:///home/sam/muse-env/muse/node_modules/execa/index.js:119:26)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async file:///home/sam/muse-env/muse/src/scripts/run-with-database-url.ts:1:143 {
  shortMessage: 'Command failed with exit code 1: tsx src/scripts/migrate-and-start.ts',
  command: 'tsx src/scripts/migrate-and-start.ts',
  escapedCommand: 'tsx "src/scripts/migrate-and-start.ts"',
  exitCode: 1,
  signal: undefined,
  signalDescription: undefined,
  stdout: undefined,
  stderr: undefined,
  failed: true,
  timedOut: false,
  isCanceled: false,
  killed: false
}

Node.js v18.20.5

@pokewizardSAM
Copy link

after tinkering a little just adding a message instead of sending a empty request fixes the issue.

player.ts

    if (newState.status === AudioPlayerStatus.Idle && this.status === STATUS.PLAYING) {
      await this.forward(1);
      // Auto announce the next song if configured to
      const settings = await getGuildSettings(this.guildId);
      const {autoAnnounceNextSong} = settings;
      if (autoAnnounceNextSong && this.currentChannel) {
        if (this.getCurrent()) {
          await this.currentChannel.send({
            embeds: [buildPlayingMessageEmbed(this)]
          });
        } else {
          await this.currentChannel.send({
            content: "Queue is now empty"
          });
        }
      }      
    }

Also you can customise this to have a graceful exit ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants