Closed ThatNerdyPikachu closed 6 years ago
You can upgrade websockets to 5.0.1 without any issues. discord.py websockets were downgraded due to an error, but that error has been fixed since. Downgrade: https://github.com/Rapptz/discord.py/commit/e04629999ba32142ba11c20191fca5eed60930f3 Websocket issue: https://github.com/aaugustin/websockets/issues/350
What @AndyTempel said is correct. We run our own branch of d.py which is near-identical to the upstream and automatically syncs updates with backstroke, but we run the latest websockets from the master branch and also aiohttp. The websocket issue has not only been fixed, it's been really looked into over the last 30 days. There are at least 7-8 commits dedicated to this. It was just that the developer was busy and didn't get a chance to review PRs that had fixed the issue long before.
Thing is, I just reinstalled Discord.py today... And it still has that error (latest rewrite pulled from GH)
The error you provided can be ignored. It's more or less a warning but shouldn't affect the library's operation unless Danny hasn't patched it (which based on the replies I believe he has)
It seems like he hasn't, this there are no errors on either Lavalink, nor the bots logs. It says that it's playing (on the user side), but it's not playing...
Did that make sense?
What websockets version are you running?
The library isn't patched - you have to upgrade manually.
Let me test that, I'll get back to you. What you said made it seem like that it was automatic, sorry for the confusion!
Oh sorry, I didn't mean it that way. I meant that we have a fork of the library on GitHub which I pull everything from instead of the main rewrite branch of discord.py - so yeah, in our case it is automatic as our websockets and aiohttp are defined to use latest versions, but you'd have to upgrade manually.
Nope, when running python -m pip install websockets --upgrade
after pulling a fresh copy of rewrite:
discord-py 1.0.0a1467+g6b75179 has requirement websockets<4.0,>=3.0, but you'll have websockets 5.0.1
which is incompatible.
Your bot may be trying to check requirements and pulling discord.py again after you upgrade on startup so it errors.
Try:
python3 -m pip install --upgrade --force-reinstall websockets
Guessing now this is a good error, since it updated?
wsproto 0.11.0 has requirement h11~=0.7.0, but you'll have h11 0.8.0 which is incompatible. discord-py 1.0.0a1467+g6b75179 has requirement websockets<4.0,>=3.0, but you'll have websockets 5.0.1 which is incompatible.
(at least I think it did)
Yes, you have websockets version 5.0.1, which is good. One more thing: try enabling debug on the logger, to see if lavalink and the client are exchanging messages.
In the main file:
import logging
logger = logging.getLogger()
logging.basicConfig(level=logging.DEBUG)
logger.setLevel(logging.DEBUG)
You should see something like that in the logs:
2018-06-07 14:30:37,946 DEBUG client > Frame(fin=True, opcode=10, data=b'', rsv1=False, rsv2=False, rsv3=False)
2018-06-07 14:30:38,144 DEBUG client < Frame(fin=True, opcode=1, data=b'{"op":"playerUpdate","state":{"position":33540,"time":1528374638194},"guildId":"404731402429530132"}', rsv1=False, rsv2=False, rsv3=False)
@AndyTempel I do, but alas, no sound still.
(note: this only happened after moving to a VPs, yes, I edited state.py)
Then this is not the clients issue. Also check what volume do you have set in lavalink and discord. But if you see that lavalink and the client are conversing then this is not the clients issue.
state.py doesn't need editing on V2+
Is Lavalink supposed to log anything else?
of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2|pika.py- | [12:21:33] [ INFO ] [SimpleUrlHandlerMapping] Mapped URL path [/**] onto handler of type
[class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2|pika.py- | [12:21:33] [ INFO ] [SimpleUrlHandlerMapping] Mapped URL path [/**/favicon.ico] onto hand
ler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2|pika.py- | [12:21:34] [ INFO ] [AnnotationMBeanExporter] Registering beans for JMX exposure on start
up
2|pika.py- | [12:21:34] [ INFO ] [Http11NioProtocol] Starting ProtocolHandler ["http-nio-0.0.0.0-2333"
]
2|pika.py- | [12:21:34] [ INFO ] [NioSelectorPool] Using a shared selector for servlet write/read
2|pika.py- | [12:21:34] [ INFO ] [TomcatWebServer] Tomcat started on port(s): 2333 (http) with context
path ''
2|pika.py- | [12:21:34] [ INFO ] [Launcher] Started Launcher in 7.803 seconds (JVM running for 9.489)
2|pika.py- | [14:12:28] [ INFO ] [[/]] Initializing Spring FrameworkServlet 'dispatcherServlet'
2|pika.py- | [14:12:28] [ INFO ] [DispatcherServlet] FrameworkServlet 'dispatcherServlet': initializat
ion started
2|pika.py- | [14:12:28] [ INFO ] [DispatcherServlet] FrameworkServlet 'dispatcherServlet': initializat
ion completed in 39 ms
2|pika.py- | [14:12:28] [ INFO ] [AudioLoaderRestHandler] GET /loadtracks
2|pika.py- | [14:12:29] [ INFO ] [AudioLoader] Loaded playlist Search results for: pikachu theme song
2|pika.py- | [14:25:44] [ INFO ] [AudioLoaderRestHandler] GET /loadtracks
2|pika.py- | [14:25:45] [ INFO ] [AudioLoader] Loaded playlist Search results for: pikachu theme song
Should be logging any received voice server/state updates and also a message containing op: play
@Devoxin here's the bots side:
0|pika.py- | [14:12:28] [lavalink.py] [DEBUG] Requesting tracks for query ytsearch:pikachu theme song
0|pika.py- | [14:12:28] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'s
essionId': '11741c4092f2d85ee25d3a481cfd8ccf', 'op': 'voiceUpdate', 'guildId': '406656930510143488', '
event': {'token': '94c340692581ecc7', 'guild_id': '406656930510143488', 'endpoint': 'us-central130.dis
cord.gg:80'}}
0|pika.py- | [14:12:30] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'play', 'guildId': '406656930510143488', 'track': 'QAAAhgIAIkJsdWUgU2F0ZWxsaXRlIOKAkyBQaWthY2h1J3M
gVGhlbWUACkF2aWVuY2xvdWQAAAAAAAHkYAALQkJaVkdEb0dEbG8AAQAraHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1CQ
lpWR0RvR0RsbwAHeW91dHViZQAAAAAAAAAA'}
0|pika.py- | [14:12:30] [lavalink.py] [DEBUG] Dispatching event of type TrackStartEvent to 1 hooks
0|pika.py- | [14:12:39] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'stop', 'guildId': '406656930510143488'}
0|pika.py- | [14:12:39] [lavalink.py] [DEBUG] Dispatching event of type QueueEndEvent to 1 hooks
0|pika.py- | [14:12:41] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'stop', 'guildId': '406656930510143488'}
0|pika.py- | [14:25:44] [lavalink.py] [DEBUG] Requesting tracks for query ytsearch:pikachu theme song
0|pika.py- | [14:25:44] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'s
essionId': '11741c4092f2d85ee25d3a481cfd8ccf', 'op': 'voiceUpdate', 'guildId': '406656930510143488', '
event': {'token': '741f5ca8936d24f4', 'guild_id': '406656930510143488', 'endpoint': 'us-central130.dis
cord.gg:80'}}
0|pika.py- | [14:25:45] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'play', 'guildId': '406656930510143488', 'track': 'QAAAhgIAIkJsdWUgU2F0ZWxsaXRlIOKAkyBQaWthY2h1J3M
gVGhlbWUACkF2aWVuY2xvdWQAAAAAAAHkYAALQkJaVkdEb0dEbG8AAQAraHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1CQ
lpWR0RvR0RsbwAHeW91dHViZQAAAAAAAAAA'}
0|pika.py- | [14:25:45] [lavalink.py] [DEBUG] Dispatching event of type TrackStartEvent to 1 hooks
0|pika.py- | [14:25:55] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'pause', 'guildId': '406656930510143488', 'pause': True}
0|pika.py- | [14:25:59] [lavalink.py] [DEBUG] Send called before websocket ready; queueing payload {'o
p': 'pause', 'guildId': '406656930510143488', 'pause': False}
0|pika.py- | [2018-06-07 14:54:04,240] 127.0.0.1 GET /stats h11 200 42 11303
0|pika.py- | [2018-06-07 14:54:11,155] 127.0.0.1 GET /stats h11 200 42 10270
Send called before websocket ready
, there's no indication that Lavalink.py connected to Lavalink, check your Client parameters match your Lavalink configuration
@Devoxin
0|pika.py- | future: <Task finished coro=<WebSocket.connect() done, defined at /root/pika.py/venv/lib/
python3.6/site-packages/lavalink/WebSocket.py:30> exception=InvalidMessage('Malformed HTTP message',)>
0|pika.py- | Traceback (most recent call last):
0|pika.py- | File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/client.py", line 80, in
read_http_response
0|pika.py- | status_code, headers = yield from read_response(self.reader)
0|pika.py- | File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/http.py", line 120, in
read_response
0|pika.py- | status_line = yield from read_line(stream)
0|pika.py- | File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/http.py", line 196, in
read_line
0|pika.py- | raise ValueError("Line without CRLF")
0|pika.py- | ValueError: Line without CRLF
0|pika.py- |
0|pika.py- | The above exception was the direct cause of the following exception:
0|pika.py- |
0|pika.py- | Traceback (most recent call last):
0|pika.py- | File "/root/pika.py/venv/lib/python3.6/site-packages/lavalink/WebSocket.py", line 52, i
n connect
0|pika.py- | self._ws = await websockets.connect(self._uri, loop=self._loop, extra_headers=headers
)
0|pika.py- | File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/client.py", line 404, i
n __await__
0|pika.py- | extra_headers=protocol.extra_headers,
0|pika.py- | File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/client.py", line 262, i
n handshake
0|pika.py- | status_code, response_headers = yield from self.read_http_response()
0|pika.py- | File "/root/pika.py/venv/lib/python3.6/site-packages/websockets/client.py", line 82, in
read_http_response
0|pika.py- | raise InvalidMessage("Malformed HTTP message") from exc
0|pika.py- | websockets.exceptions.InvalidMessage: Malformed HTTP message
Does the websocket host & port match the address in your lavalink config?
I think?
server: # REST server
port: 2333
address: 0.0.0.0
lavalink:
server:
password: "[redacted]"
ws:
port: 80
host: 0.0.0.0
sources:
youtube: true
bandcamp: true
soundcloud: true
twitch: true
vimeo: true
mixer: true
http: true
local: false
sentryDsn: ""
bufferDurationMs: 400
youtubePlaylistLoadLimit: 600
Judging by this
0|pika.py- | [2018-06-07 14:54:04,240] 127.0.0.1 GET /stats h11 200 42 11303
0|pika.py- | [2018-06-07 14:54:11,155] 127.0.0.1 GET /stats h11 200 42 10270
You have another webserver running (integrated with your bot?) Try change the WS port from 80 as this may be conflicting
Do you also have a web server on the same machine? Also please show your Lavalink.py client config (client object) without your password of course.
Oh, yes. I do have a WS. Let me change that...
@AndyTempel When I changed the port...
[17:07:00] [ INFO ] [Launcher] Starting Launcher on ubuntu with PID 75445 (/root/lavalink/Lavalink.jar
started by root in /root/lavalink)
[17:07:00] [ INFO ] [Launcher] No active profile set, falling back to default profiles: default
[17:07:00] [ INFO ] [AnnotationConfigServletWebServerApplicationContext] Refreshing org.springframewor
k.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6d00a15d: startup date [
Thu Jun 07 17:07:00 UTC 2018]; root of context hierarchy
[17:07:04] [ INFO ] [TomcatWebServer] Tomcat initialized with port(s): 2333 (http)
[17:07:04] [ INFO ] [Http11NioProtocol] Initializing ProtocolHandler ["http-nio-0.0.0.0-2333"]
[17:07:04] [ INFO ] [StandardService] Starting service [Tomcat]
[17:07:04] [ INFO ] [StandardEngine] Starting Servlet Engine: Apache Tomcat/8.5.28
[17:07:04] [ INFO ] [AprLifecycleListener] The APR based Apache Tomcat Native library which allows opt
imal performance in production environments was not found on the java.library.path: [/usr/java/package
s/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni
:/lib:/usr/lib]
[17:07:04] [ INFO ] [[/]] Initializing Spring embedded WebApplicationContext
[17:07:04] [ INFO ] [ContextLoader] Root WebApplicationContext: initialization completed in 4007 ms
[17:07:05] [ INFO ] [ServletRegistrationBean] Servlet dispatcherServlet mapped to [/]
[17:07:05] [ INFO ] [FilterRegistrationBean] Mapping filter: 'characterEncodingFilter' to: [/*]
[17:07:05] [ INFO ] [FilterRegistrationBean] Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
[17:07:05] [ INFO ] [FilterRegistrationBean] Mapping filter: 'httpPutFormContentFilter' to: [/*]
[17:07:05] [ INFO ] [FilterRegistrationBean] Mapping filter: 'requestContextFilter' to: [/*]
[17:07:05] [ INFO ] [GarbageCollectionMonitor] GC monitoring enabled, reporting results every 2 minute
s.
[17:07:05] [ INFO ] [AudioSendFactoryConfiguration] OS: Linux, Arch: amd64
[17:07:05] [ INFO ] [AudioSendFactoryConfiguration] JDA-NAS supported system detected. Enabled native
audio sending.
[17:07:05] [ INFO ] [AudioSendFactoryConfiguration] Setting buffer to 400ms
[17:07:05] [ INFO ] [AudioSendFactoryConfiguration] Setting playlist load limit to 600
[17:07:05] [ INFO ] [Launcher] No sentry dsn found, turning off sentry.
[17:07:05] [ ERROR] [SocketServer] Caught exception in websocket
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
at org.java_websocket.server.WebSocketServer.run(WebSocketServer.java:315)
at java.lang.Thread.run(Thread.java:748)
Exception in thread "WebsocketSelector18" java.lang.NullPointerException
at org.java_websocket.server.WebSocketServer.stop(WebSocketServer.java:257)
at org.java_websocket.server.WebSocketServer.stop(WebSocketServer.java:263)
at org.java_websocket.server.WebSocketServer.handleFatal(WebSocketServer.java:539)
at org.java_websocket.server.WebSocketServer.run(WebSocketServer.java:321)
at java.lang.Thread.run(Thread.java:748)
[17:07:07] [ INFO ] [RequestMappingHandlerAdapter] Looking for @ControllerAdvice: org.springframework.
boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6d00a15d: startup date [Th
u Jun 07 17:07:00 UTC 2018]; root of context hierarchy
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/loadtracks],methods=[GET],produces=[appl
ication/json]}" onto public java.lang.String lavalink.server.player.AudioLoaderRestHandler.getLoadTrac
ks(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,java.lang.String) thro
ws java.io.IOException,java.lang.InterruptedException
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/decodetrack],methods=[GET],produces=[app
lication/json]}" onto public java.lang.String lavalink.server.player.AudioLoaderRestHandler.getDecodeT
rack(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,java.lang.String) th
rows java.io.IOException
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/decodetracks],methods=[POST],consumes=[a
pplication/json],produces=[application/json]}" onto public java.lang.String lavalink.server.player.Aud
ioLoaderRestHandler.postDecodeTracks(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServ
letResponse,java.lang.String) throws java.io.IOException
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/debug/nashorn],methods=[POST]}" onto pub
lic java.lang.String lavalink.server.util.DebugRestHandler.getLoadTracks(javax.servlet.http.HttpServle
tRequest,javax.servlet.http.HttpServletResponse,java.lang.String,java.lang.String)
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/error],produces=[text/html]}" onto publi
c org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.erro
r.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletR
esponse)
[17:07:07] [ INFO ] [RequestMappingHandlerMapping] Mapped "{[/error]}" onto public org.springframework
.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoc
onfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
[17:07:07] [ INFO ] [SimpleUrlHandlerMapping] Mapped URL path [/webjars/**] onto handler of type [clas
s org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
[17:07:07] [ INFO ] [SimpleUrlHandlerMapping] Mapped URL path [/**] onto handler of type [class org.sp
ringframework.web.servlet.resource.ResourceHttpRequestHandler]
[17:07:07] [ INFO ] [SimpleUrlHandlerMapping] Mapped URL path [/**/favicon.ico] onto handler of type [
class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
[17:07:07] [ INFO ] [AnnotationMBeanExporter] Registering beans for JMX exposure on startup
[17:07:07] [ INFO ] [Http11NioProtocol] Starting ProtocolHandler ["http-nio-0.0.0.0-2333"]
[17:07:07] [ ERROR] [StandardService] Failed to start connector [Connector[HTTP/1.1-2333]]
org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-2333]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.StandardService.addConnector(StandardService.java:225)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors
(TomcatWebServer.java:255)
at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:197
)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebSer
ver(ServletWebServerApplicationContext.java:300)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefre
sh(ServletWebServerApplicationContext.java:162)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationC
ontext.java:552)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(Ser
vletWebServerApplicationContext.java:140)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:388)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:327)
at lavalink.server.Launcher.main(Launcher.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1021)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 19 common frames omitted
Caused by: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210)
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1150)
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:591)
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1018)
... 20 common frames omitted
[17:07:07] [ INFO ] [Http11NioProtocol] Pausing ProtocolHandler ["http-nio-0.0.0.0-2333"]
[17:07:07] [ INFO ] [StandardService] Stopping service [Tomcat]
[17:07:07] [ INFO ] [LifecycleBase] The stop() method was called on component [StandardServer[-1]] aft
er stop() had already been called. The second call will be ignored.
[17:07:07] [ INFO ] [Http11NioProtocol] Stopping ProtocolHandler ["http-nio-0.0.0.0-2333"]
[17:07:07] [ INFO ] [Http11NioProtocol] Destroying ProtocolHandler ["http-nio-0.0.0.0-2333"]
[17:07:07] [ INFO ] [GarbageCollectionMonitor] GC monitoring disabled.
Tomcat webserver couldn't start because the address/port is in use. Try change the port your REST server uses.
Changed ports, and it just doesn't connect. Debug log shows nothing of interest Lavalink actually starts up though, and the ports are set in Client, but it doesn't connect.
If it helps at all, it queries successfully,,and it says now playing and such
Can you dump your code somewhere? (e.g. Hastebin)
It's literally the example cog code (for now), with the ports changed
It successfully sends stuff to the REST server, but not to WS
REST is a different matter. Could you try call lavalinkClient.WS.connect()?
all its doing is it says "connecting..." but never finishes
[21:57:06] [lavalink.py] [DEBUG] Preparing to connect to Lavalink
[21:57:06] [lavalink.py] [DEBUG] with URI: ws://localhost:5244
[21:57:06] [lavalink.py] [DEBUG] with headers: {'Authorization': '[redacted]', 'Num-Shards': 1, 'User-Id': 412042272268615680}
[21:57:06] [lavalink.py] [INFO] Connecting to Lavalink...
lavalink shows nothing on its side
@Devoxin It finally connects! Yet, when I try to play...
Uncaught exception in thread "WebSocketWorker-16":java.lang.NoClassDefFoundError: com/sedmelluq/discord/lavaplayer/jdaudp/NativeAudioSendFactory
at lavalink.server.io.SocketContext.lambda$getAudioSendFactory$7(SocketContext.java:146)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at lavalink.server.io.SocketContext.getAudioSendFactory(SocketContext.java:141)
at lavalink.server.io.SocketContext.lambda$getCore$3(SocketContext.java:90)
at java.util.HashMap.computeIfAbsent(HashMap.java:1127)
at lavalink.server.io.SocketContext.getCore(SocketContext.java:87)
at lavalink.server.io.SocketServer.onMessage(SocketServer.java:137)
at org.java_websocket.server.WebSocketServer.onWebsocketMessage(WebSocketServer.java:551)
at org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:696)
at org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:367)
at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:212)
at org.java_websocket.server.WebSocketServer$WebSocketWorker.run(WebSocketServer.java:888)
Caused by: java.lang.ClassNotFoundException: com.sedmelluq.discord.lavaplayer.jdaudp.NativeAudioSendFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 12 more
What version of Java are you using? Upgrade to v10 if you can, especially if you're on v8.
Fixed by upgrading Lavalink to dev branch
This results in the bot not playing anything.