Giter Club home page Giter Club logo

lava's Issues

feat: search menu after /play command

你的功能請求與問題有關嗎?請描述
因為使用手機版或是電腦版的時候斜線指令./play常常會沒有選到自動填入的內容導致說整個名稱需要重新輸入

描述你想要的解決方案
我希望如果沒有選到送出的時候能夠使用文字的方式來做一個下拉選單讓使用者能夠二次選擇

描述你考慮過的替代方案
或是可以把搜尋結果條列出來使用按鈕的方式選擇

其他內容
像是yeecord的機器龍

feat: lazy load for lyrics

The current implementation for lyrics works, but it defers the display update until it fetched the lyrics, which just lead to unnecessary waitings. A lazy loading mechanics should fix this issue and improve the user experience.

feat: playing history

Store user's previous played songs into a database. So they can directly play them next time.

Bug: Autoplay doesn't function

說明錯誤
對這個錯誤下一段簡單且精準的描述

復現步驟

  1. 點擊Autoplay

期望行為
正常推薦歌曲

螢幕截圖

lava-1  | TypeError: string indices must be integers, not 'str'
lava-1  | 2024-05-05 12:08:06  [INFO] Queue is empty, adding recommended track for guild OSU群...
lava-1  | 2024-05-05 12:08:06  [INFO] Updating display for player in guild OSU群 in a 0 seconds delay
lava-1  | 2024-05-05 12:08:07  [ERROR] Task exception was never retrieved
lava-1  | future: <Task finished name='Task-214' coro=<LavaPlayer.check_autoplay() done, defined at /lava/lava/classes/player.py:43> exception=TypeError("string indices must be integers, not 'str'")>
lava-1  | Traceback (most recent call last):
lava-1  |   File "/lava/lava/classes/player.py", line 55, in check_autoplay
lava-1  |     recommendations = await get_recommended_tracks(self, self.current, 5 - len(self.queue))
lava-1  |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lava-1  |   File "/lava/lava/utils.py", line 127, in get_recommended_tracks
lava-1  |     if result['id'] in [song.identifier for song in player.queue]:  # Don't add duplicate songs
lava-1  |        ~~~~~~^^^^^^

程式版本
b363a45 on master from https://github.com/Nat1anWasTaken/Lava

額外資訊

bug: bot is not starting at all

說明錯誤
機器人並無法正常啟動

復現步驟

  1. 啟動機器人 (docker compose up)

期望行為

  1. 啟動

螢幕截圖

nathan@... ~/Lava (master)> docker compose up
 [+] Running 1/0
 ✔ Container lava-lava-1  Ru...                         0.0s Attaching to lava-lava-1

程式版本
master at 1dd6419

bug: Video returned by YouTube isn't what was requested

Describe the Bug
When playing a song from YouTube, these error showed in Lavalink node's logs and skips the song:

lava-1  | com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Video returned by YouTube isn't what was requested
lava-1  |       at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.load(DefaultYoutubeTrackDetailsLoader.java:59) ~[lavaplayer-2.1.1.jar!/:na]lava-1  |       at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeTrackDetailsLoader.loadDetails(DefaultYoutubeTrackDetailsLoader.java:36) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadTrackWithVideoId(YoutubeAudioSourceManager.java:230) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:254) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager$LoadingRoutes.track(YoutubeAudioSourceManager.java:250) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromUrlWithVideoId(DefaultYoutubeLinkRouter.java:103) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.routeFromMainDomain(DefaultYoutubeLinkRouter.java:68) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.source.youtube.DefaultYoutubeLinkRouter.route(DefaultYoutubeLinkRouter.java:46) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItemOnce(YoutubeAudioSourceManager.java:218) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager.loadItem(YoutubeAudioSourceManager.java:149) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItemOnce(DefaultAudioPlayerManager.java:412) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.checkSourcesForItem(DefaultAudioPlayerManager.java:394) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.loadItemSync(DefaultAudioPlayerManager.java:156) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager.loadItemSync(AudioPlayerManager.java:91) ~[lavaplayer-2.1.1.jar!/:na]
lava-1  |       at lavalink.server.player.AudioLoader.load(AudioLoader.kt:56) ~[classes!/:4.0.4]
lava-1  |       at lavalink.server.player.AudioLoaderRestHandler.loadTracks(AudioLoaderRestHandler.kt:56) ~[classes!/:4.0.4]
lava-1  |       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
lava-1  |       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
lava-1  |       at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
lava-1  |       at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
lava-1  |       at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
lava-1  |       at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527) ~[jakarta.servlet-api-6.0.0.jar!/:6.0.0]
lava-1  |       at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.9.jar!/:6.0.9]
lava-1  |       at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) ~[jakarta.servlet-api-6.0.0.jar!/:6.0.0]
lava-1  |       at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:289) ~[spring-web-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
lava-1  |       at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at lavalink.server.io.ResponseHeaderFilter.doFilterInternal(ResponseHeaderFilter.kt:17) ~[classes!/:4.0.4]
lava-1  |       at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
lava-1  |       at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.9.jar!/:6.0.9]
lava-1  |       at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.9.jar!/:6.0.9]
lava-1  |       at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101) ~[undertow-servlet-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:859) ~[undertow-core-2.3.6.Final.jar!/:2.3.6.Final]
lava-1  |       at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
lava-1  |       at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
lava-1  |       at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) ~[jboss-threads-3.5.0.Final.jar!/:3.5.0.Final]
lava-1  |       at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282) ~[xnio-api-3.8.8.Final.jar!/:3.8.8.Final]
lava-1  |       at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]

Steps to Reproduce
Steps to reproduce the behavior:

  1. Play a song from YouTube

Expected Behavior
Play the song correctly

Program Version
26e63a7 on master from https://github.com/Nat1anWasTaken/Lava

Additional Information
There's a fork for Lavalink which fixes this issue, ZeyoYT/Lavalink. Considering building and update the default Lavalink.jar file to it temporary until Lavalink officially fixes it.

lavalink-devs/Lavalink#1030

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

docker-compose
docker-compose.yml
dockerfile
Dockerfile
  • python 3.12.4-alpine
  • python 3.12.4-alpine
github-actions
.github/workflows/docker-image.yml
  • actions/checkout v4
  • docker/setup-buildx-action v3
  • satackey/action-docker-layer-caching v0.0.11
  • docker/login-action v3
  • docker/bake-action v5
pip_requirements
requirements.txt
  • PyNaCl ==1.5.0
  • spotipy ==2.24.0
  • requests ==2.32.3
  • beautifulsoup4 ==4.12.3
  • psutil ==6.0.0
  • disnake ==2.9.2
  • python-dotenv ==1.0.1
  • yt-dlp ==2024.8.6
  • aiohttp ==3.10.2
  • imageio ==2.35.1
  • pylrc ==0.1.2
  • syncedlyrics ==1.0.1
  • nodriver ==0.36
  • undetected-chromedriver ==3.5.5

  • Check this box to trigger a request for Renovate to run again on this repository

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.