Manicraft1001
Manicraft1001
Explore posts from servers
DIAdiscord.js - Imagine a boo! 👻
Created by Manicraft1001 on 10/16/2024 in #djs-voice
AudioPlayer goes from buffering -> playing -> idle and warns that resource is not playable
Hi, I have troubles for the last months with playback of resources. The source is available at https://github.com/manuel-rw/jellyfin-discord-music-bot Even though the stream URL seems correct to me, the bot goes into idle after a few milliseconds and it stays silent in Discord. I have tried different variations of the stream URL but they dont' seem to change anything. It used to work fine - I did not make an update of discord.js in the mean time. The code playing for resources is distributed, but let me summarise it shortly:
playResource(resource: AudioResource<unknown>) {
this.logger.debug(
`Playing audio resource with volume ${resource.volume?.volume} (${resource.playbackDuration}) (readable: ${resource.readable}) (volume: ${resource.volume?.volume} (${resource.volume?.volumeDecibels}dB)) (silence remaining: ${resource.silenceRemaining}) (silence padding frames: ${resource.silencePaddingFrames}) (metadata: ${resource.metadata})`,
);
this.createAndReturnOrGetAudioPlayer().play(resource);
this.audioResource = resource;

const isPlayable = this.audioPlayer?.checkPlayable();
if (isPlayable) {
return;
}
this.logger.warn(
`Current resource is is not playable. This means playback will get stuck. Please report this issue.`,
); // <--- this is where the bot goes into. It seems that the track is never playable
}
playResource(resource: AudioResource<unknown>) {
this.logger.debug(
`Playing audio resource with volume ${resource.volume?.volume} (${resource.playbackDuration}) (readable: ${resource.readable}) (volume: ${resource.volume?.volume} (${resource.volume?.volumeDecibels}dB)) (silence remaining: ${resource.silenceRemaining}) (silence padding frames: ${resource.silencePaddingFrames}) (metadata: ${resource.metadata})`,
);
this.createAndReturnOrGetAudioPlayer().play(resource);
this.audioResource = resource;

const isPlayable = this.audioPlayer?.checkPlayable();
if (isPlayable) {
return;
}
this.logger.warn(
`Current resource is is not playable. This means playback will get stuck. Please report this issue.`,
); // <--- this is where the bot goes into. It seems that the track is never playable
}
@OnEvent('internal.audio.track.announce')
handleOnNewTrack(track: Track) {
const resource = createAudioResource( // <--- builds the stream URL. Seems to build the correct one. Tried with OPUS and AAC
track.getStreamUrl(this.jellyfinStreamBuilder),
{
inlineVolume: true,
},
);
this.playResource(resource); // <-- calls the above function
}
@OnEvent('internal.audio.track.announce')
handleOnNewTrack(track: Track) {
const resource = createAudioResource( // <--- builds the stream URL. Seems to build the correct one. Tried with OPUS and AAC
track.getStreamUrl(this.jellyfinStreamBuilder),
{
inlineVolume: true,
},
);
this.playResource(resource); // <-- calls the above function
}
All relevant code in discord.voice.service.ts Log: https://pastebin.com/ZGyrYzmQ I already added tons of debugging branches & log statements to troubleshoot. Do you have suggestions for the next steps? How can I troubleshoot resources that can't be played? Also, the docs don't go into much detail why resources aren't "playable". I read the following pages and could not find further steps / ideas: https://discordjs.guide/voice/audio-resources.html#cheat-sheet, https://discord.js.org/docs/packages/voice/0.13.0/AudioPlayer:Class#checkPlayable Node: v20.13.1
[email protected] C:\XXXXXX\jellyfin-discord-music-bot
+-- @discord-nestjs/[email protected]
| `-- [email protected] deduped
+-- @discord-nestjs/[email protected]
| `-- [email protected] deduped
[email protected] C:\XXXXXX\jellyfin-discord-music-bot
+-- @discord-nestjs/[email protected]
| `-- [email protected] deduped
+-- @discord-nestjs/[email protected]
| `-- [email protected] deduped
Crosspost from #djs-questions , wrong channel. Sorry.
2 replies
DIAdiscord.js - Imagine a boo! 👻
Created by Manicraft1001 on 1/24/2023 in #djs-questions
What are possible causes for "DiscordAPIError[10062]: Unknown interaction"
Hello 👋 A user of my bot reported that they are getting the following error:
DiscordAPIError[10062]: Unknown interaction
at SequentialHandler.runRequest (/root/jellyfin-discord-music-bot/node_modules/@discordjs/rest/dist/index.js:667:15)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async SequentialHandler.queueRequest (/root/jellyfin-discord-music-bot/node_modules/@discordjs/rest/dist/index.js:464:14)
at async REST.request (/root/jellyfin-discord-music-bot/node_modules/@discordjs/rest/dist/index.js:910:22)
at async ChatInputCommandInteraction.reply (/root/jellyfin-discord-music-bot/node_modules/discord.js/src/structures/interfaces/InteractionResponses.js:111:5)
at async SummonCommand.handler (/root/jellyfin-discord-music-bot/dist/commands/summon.command.js:41:9)
Emitted 'error' event on Client instance at:
at emitUnhandledRejectionOrErr (node:events:251:10)
at processTicksAndRejections (node:internal/process/task_queues:85:21) {
requestBody: {
files: [],
json: {
type: 4,
data: {
content: undefined,
tts: false,
nonce: undefined,
embeds: [ { color: 7828684, author: [Object], footer: [Object] } ],
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: 'Unknown interaction', code: 10062 },
code: 10062,
status: 404,
method: 'POST',
url: 'https://discord.com/api/v10/interactions/callback'
}
DiscordAPIError[10062]: Unknown interaction
at SequentialHandler.runRequest (/root/jellyfin-discord-music-bot/node_modules/@discordjs/rest/dist/index.js:667:15)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async SequentialHandler.queueRequest (/root/jellyfin-discord-music-bot/node_modules/@discordjs/rest/dist/index.js:464:14)
at async REST.request (/root/jellyfin-discord-music-bot/node_modules/@discordjs/rest/dist/index.js:910:22)
at async ChatInputCommandInteraction.reply (/root/jellyfin-discord-music-bot/node_modules/discord.js/src/structures/interfaces/InteractionResponses.js:111:5)
at async SummonCommand.handler (/root/jellyfin-discord-music-bot/dist/commands/summon.command.js:41:9)
Emitted 'error' event on Client instance at:
at emitUnhandledRejectionOrErr (node:events:251:10)
at processTicksAndRejections (node:internal/process/task_queues:85:21) {
requestBody: {
files: [],
json: {
type: 4,
data: {
content: undefined,
tts: false,
nonce: undefined,
embeds: [ { color: 7828684, author: [Object], footer: [Object] } ],
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: 'Unknown interaction', code: 10062 },
code: 10062,
status: 404,
method: 'POST',
url: 'https://discord.com/api/v10/interactions/callback'
}
I instantly expected that Discord was probably not happy with the response time, since the action may take some while. So I refactored to use await deferReply(). This works for me, but the users still has the same error. We already debugged everything around and concluded, that await deferReply() just under a second. deferReply does not seem to be the issue. I call it correctly. This issue has already been reported once, but the thread was locked: https://github.com/discordjs/discord.js/issues/7005 Thus, I decided to ask here, what other possible issues besides the timeout, could cause this issue. I'm happy to provide the source code, but I sadly can't reproduce the error on my machine. I can provide the code, but as the issue already says, the code does not seem to be the problem here.
PS D:\jellyfin-discord-music-bot> npm list discord.js
jellyfin-discord-music-[email protected] D:\jellyfin-discord-music-bot
├─┬ @discord-nestjs/[email protected]
│ └── [email protected] deduped
├─┬ @discord-nestjs/[email protected]
│ └── [email protected] deduped
└── [email protected]

PS D:\jellyfin-discord-music-bot> node -v
v16.17.1
PS D:\jellyfin-discord-music-bot> npm list discord.js
jellyfin-discord-music-[email protected] D:\jellyfin-discord-music-bot
├─┬ @discord-nestjs/[email protected]
│ └── [email protected] deduped
├─┬ @discord-nestjs/[email protected]
│ └── [email protected] deduped
└── [email protected]

PS D:\jellyfin-discord-music-bot> node -v
v16.17.1
4 replies
DIAdiscord.js - Imagine a boo! 👻
Created by Manicraft1001 on 12/25/2022 in #djs-voice
Elapsed audio resource duration
Hello everyone, I'm currently trying to implement a proper progress bar which displays the playback of the current song. According to a few questions online, it seems like discord.js used to have a streamTime property. It looks like this has been removed for some reason in the next release. - Why has this been removed? - Is there any replacement or other way to get the current position in millis? I saw https://discord.js.org/#/docs/voice/main/class/AudioResource?scrollTo=playbackDuration, but this seems to be something different. I am playing the resource using this method: https://github.com/manuel-rw/jellyfin-discord-music-bot/blob/92021dd94e824af91a559d161df11b2898812595/src/clients/discord/discord.voice.service.ts#L87
18 replies