Giter Club home page Giter Club logo

aiode's Introduction

# botify Discord bot that plays Spotify tracks and YouTube videos or any URL including Soundcloud links and Twitch streams.

  • Play and search Spotify tracks and YouTube videos or playlists or play any URL including Soundcloud links and Twitch streams
  • Create cross-platform playlists with tracks from any source
  • Simple and customisable player commands
  • Create custom command presets as shortcuts for your most used commands
  • Adjustable properties for even deeper customisation
  • Sign in to Spotify to play your own playlists or upload aiode playlists
  • Manage what roles can access which commands
  • Customise how you want to summon your bot by using a custom prefix or giving your bot a name
  • Advanced admin commands such as updating and rebooting the bot or cleaning up the database available to bot administrators
  • Capable scripting sandbox that enables running and storing custom groovy scripts and modifying command behavior through interceptors

Invite it to your guild

Invite the bot to join your guild

Host it yourself

1. Create a Discord app

1.1 Go to https://discordapp.com/developers/applications and create an application

1.2 Click "Bot" on the side menu to create a bot and copy the token for later

2. Create a Spotify app

2.1 Go to https://developer.spotify.com/dashboard/applications to create a Spotify application and copy the client id

2.2 Click on "Edit Settings" and whitelist your Redirect URI for the Spotify login

Don't have a domain? You could either go without logins all together and still use most of aiode's features or use your router's public ip and setup port forwarding for your router.

3. Create a YouTube Data API project

3.1 Go to https://console.developers.google.com/ and create a project for the YouTube Data API and create and copy the credentials

4. Setup aiode settings

4.1 Apply your confidentials created in the previous steps and manage your private settings

4.1.1 Navigate to your cloned project and go to src/main/resources and create the settings-private.properties from the example below and fill in the blanks. This file is included in gitignore to make sure you don't accidentally publish it.
4.1.2 Adjust datasource properties and enter the database user and password, database setup will be discussed further in 4.2.1.
4.1.3 To take advantage of the admin commands that can perform administrative actions, such as updating and restarting the bot, be sure to add your Discord user id to the aiode.security.admin_users property. To find your Discord user id, enable Developer Mode in the App Settings > Appearance. Then go to any guild, right click your user and click "Copy ID".
##########
# tokens #
##########
aiode.tokens.discord_token=
aiode.tokens.spotify_client_id=
aiode.tokens.spotify_client_secret=
aiode.tokens.youtube_credentials=
############
# security #
############
#define user ids (comma separated) that may access admin commands. These users can always use each command irregardless of access configurations
aiode.security.admin_users=
##############
# datasource #
##############
spring.datasource.username=postgres
spring.datasource.password=postgres
########
# IPv6 #
########
# list IPv6 blocks to use for the lavaplayer route planner (comma separated)
aiode.preferences.ipv6_blocks=
##############################
# top.gg settings (optional) #
##############################
#copy your discord client id here
aiode.tokens.discord_bot_id=
#copy your top.gg token here
aiode.tokens.topgg_token=
#######################
# youtube credentials #
#######################
# set these properties to support age restricted videos on YouTube, see https://github.com/Walkyst/lavaplayer-fork/issues/18
aiode.tokens.yt-email=
aiode.tokens.yt-password=

4.2 Adjust application.properties

4.2.1 Review the datasource properties and make necessary adjustments. If you are using a local postgres server and name your database "aiode" you can leave it as it is. If you need help setting up your postgres server, please refer to their official documentation: http://www.postgresqltutorial.com/.
4.2.2 For Aiode to manage the YouTube API quota usage automatically, be sure to fill in the aiode.preferences.youtube_api_daily_quota property; open the Google developer console and go to Library > YouTube Data API v3 > Manage > Quotas
4.2.3 Change the aiode.server.base_uri property to your domain or public IP (without slash at the end) and adjust aiode.server.spotify_login_callback to the corresponding endpoint for Spotify logins (normally BASE_URI + "/login")

Don't have a domain? You could either go without a web server all together and still use most of aiode's features or use your router's public ip and setup port forwarding for your router to the machine where you're running aiode via the port specified by the SERVER_PORT property.

###################
# server settings #
###################
aiode.server.port=8000
aiode.server.base_uri=http://localhost:8000
aiode.server.spotify_login_callback=http://localhost:8000/login
spring.liquibase.change-log=classpath:liquibase/dbchangelog.xml
spring.liquibase.contexts=definition,initialvalue,constraint
liquibase.change-log-path=src/main/resources/liquibase/dbchangelog.xml
liquibase.referenceUrl=hibernate:spring:net.robinfriedli.aiode.entities?dialect=org.hibernate.dialect.PostgreSQL10Dialect
###############
# preferences #
###############
# replace this value with your YouTube API Quota: open the Google developer console and go to Library > YouTube Data API v3 > Manage > Quotas
aiode.preferences.youtube_api_daily_quota=1000001
# partitioned = true means that data, such as playlists, presets and scripts will be separated between guilds
# if you host this bot privately and want to share data between few guilds you can set this property to 'false'
# however you should decide decide which mode to use before using the bot; if you have been using the bot with partitioned = true
# and several guilds have playlists or presets or scripts with the same name and you switch to partitioned = false then
# many queries will break because names are no longer unique
aiode.preferences.mode_partitioned=true
aiode.preferences.queue_size_max=10000
# maximum entity count per guild (if mode_partitioned = true, else entity count total)
aiode.preferences.playlist_count_max=50
aiode.preferences.playlist_size_max=5000
aiode.preferences.preset_count_max=100
aiode.preferences.script_count_max=100
aiode.preferences.interceptor_count_max=10
# defines max heap size for the bootRun task
aiode.preferences.max_heap_size=2048m
# disable / enable commands in the scripting category and custom scripted command interceptors
aiode.preferences.enable_scripting=true
##############
# datasource #
##############
spring.datasource.url=jdbc:postgresql://localhost:5432/aiode
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect
spring.jpa.properties.hibernate.current_session_context_class=thread
# pool
spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.maximumPoolSize=50
# cache
spring.jpa.properties.hibernate.cache.use_query_cache=true
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory
spring.jpa.properties.hibernate.javax.cache.provider=org.ehcache.jsr107.EhcacheCachingProvider
spring.jpa.properties.hibernate.javax.cache.missing_cache_strategy=create

6 Compile and run aiode

Requires:

  • java jdk 17 or above (preferably 17, as it is the version used in development and thus main supported version)
  • rust and cargo-make with the wasm32-unknown-unknown target for the webapp

6.1 Compile webapp

Install rust, preferably via rustup, then add the wasm32-unknown-unknown target by running rustup target add wasm32-unknown-unknown and install cargo-make with cargo install --force cargo-make. Finally, navigate to src/main/webapp and compile the webapp with cargo make build.

6.2 Compile bot

Navigate to the project root directory and install aiode by running ./gradlew build (or if you have gradle installed you can just run gradle build).

6.3 Run aiode

Then you can launch aiode using the jar file or the bootRun gradle task. You can either run the jar file in build/libs by running java -jar build/libs/aiode-1.0-SNAPSHOT.jar or run the bash script bash/launch.sh or use the gradle bootRun task by running ./gradlew bootRun. To keep the program running when closing the terminal window use a terminal multiplexer tool like tmux (Unix-like operating systems (e.g. Linux or MacOS) only) to manage a terminal session.

aiode's People

Contributors

dependabot[bot] avatar eliasbnr avatar robinfriedli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

aiode's Issues

Spotify as Music Player

Hey,
is it posible to play the music from spotify instead of youtube?
Best regards
Elias B.

Cannot login to the spotify...

I tried to start playing a station, and the bot told me that I was not logged in (despite logging in earlier in the week). I tried to login again, was sent the spotify link and clicked on the accept button, but was returned to the web with the following error:

This site can’t be reached botify.gg.robinfriedli.net refused to connect.

I then tried to start playing music again and was still told that I am not logged in.

Youtube API Quota limit

It seems the YT api has a query limit where the bot stops playing music after around 100 songs or so. Apparently this counts Spotify playlists loaded, even if it hasn't gotten to all songs (aka, when I load a playlist with 10 songs, it counts the full amount against my API usage immediately). This means if I try to load a very large Spotify playlist (hundreds of tracks), it immediately errors out and shuts me out for the entire rest of the day. Currently I have to manually tell Botify to play each track one by one to avoid this.

Is there a way to not perform the YouTube lookup until the song actually is set to play? As in, have botify load the Spotify list, handle the shuffle, queue, etc. on the server but only search YouTube for the song when each song plays?

Webapp usage

Hi! This is more of a question than an issue. I've been running the development (v2) version and so far it has been working nicely 😄 I do wonder though, how does one use the webapp that is built with rust? I see sometimes the bot gives links (e.g. on queue command), is that it? I also see that the bot listens on two http ports, one always 404's and the other one has those pages. Should I be doing something else to use the webapp?

Thanks for the great bot!

Unable to play Spotify playlist from my own library

Hello!

Even after logging in to my own Spotify account with botify, it still doesn't connect to my own playlists.

I tried using the command $botify play $spotify $list $own massive tb playlist wow, but it didn't work. I am able to use the command $botify play $spotify $list throwback jams to play random Spotify playlists, but I am unable to access my own library when I do that - I only wanted to try this command just in case.

This is what I keep getting in response whenever I try to play my own playlist:

Exception
NullPointerException: null
CommandContext ID
65520798-94e1-40c3-aad6-a8e68f7e1808 (but the ID changes each time)

I am able to play the same playlist though if I use the URL $botify play someurl.com, so playing my own playlists work that way (but I'd have to keep going to the browser version of Spotify to grab a playlist url every time I want to change it). It also doesn't let me play the generic playlist of "Liked Songs" since that doesn't have a URL (https://open.spotify.com/collection/tracks) that botify recognizes.

Botify Offline

I went to listen to music but no commands worked. Botify is offline. Tried readding but didnt work please help

Gradlew Build Fails

Sorry for another issue but it looks like bintray is going away and or having a major outage as building your project no longer works

aiode@aiode00:~/aiode$ ./gradlew build
> Task :compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
   > Could not resolve com.sedmelluq:lavaplayer-ext-youtube-rotator:0.2.3.
     Required by:
         project :
      > Could not resolve com.sedmelluq:lavaplayer-ext-youtube-rotator:0.2.3.
         > Could not get resource 'https://dl.bintray.com/sedmelluq/com.sedmelluq/com/sedmelluq/lavaplayer-ext-youtube-rotator/0.2.3/lavaplayer-ext-youtube-rotator-0.2.3.pom'.
            > Could not HEAD 'https://dl.bintray.com/sedmelluq/com.sedmelluq/com/sedmelluq/lavaplayer-ext-youtube-rotator/0.2.3/lavaplayer-ext-youtube-rotator-0.2.3.pom'. Received status code 502 from server: Bad Gateway
   > Could not resolve net.dv8tion:JDA:4.3.0_346.
     Required by:
         project :
      > Could not resolve net.dv8tion:JDA:4.3.0_346.
         > Could not get resource 'https://dl.bintray.com/sedmelluq/com.sedmelluq/net/dv8tion/JDA/4.3.0_346/JDA-4.3.0_346.pom'.
            > Could not HEAD 'https://dl.bintray.com/sedmelluq/com.sedmelluq/net/dv8tion/JDA/4.3.0_346/JDA-4.3.0_346.pom'. Received status code 502 from server: Bad Gateway

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/7.0/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 5s
1 actionable task: 1 executed

Question: What bitrate does this bot stream at?

I'm not very knowledgeable in the land of coding, less about Discord bots, but I was wondering how this bot streams in the sense of bitrate?

What I've found is that I can decrease the quality of a Discord channel to only 8kbps but the bot will continue to stream high fidelity audio. As an audiophile, this is good news because it means the bot might not be limited to Discord's data cap of 96kbps nor it's default 64kbps. As a technologically curious person, however, I'm left wondering how much data the bot streams.

Are you able to give me a guess as to how much audio data your bot streams based on your code, or if you have some data cap in place? I'm wondering if using the free web player (128kbps) or the free desktop application (196kbps) would guarantee a better audio experience. Either way, I'll still be using your bot, I'm just curious is all.

This issue can be closed once the creator of the bot answers my question.

Soundcloud Links Have Problem to Play

The first time I used the bot can play the music from soundcloud's links. However, after a few months later, I used the bot to play the soundcloud, and I unable to do it, but not for youtube's links.

shuffle

what about a shuffle thing?

few suggestions if you dont mind

If an option where you search for music and select the option from the list implemented would be great! check rythm bot!

When you use the play command, the song restarts always , please check on that. also it would be convenient if the play command adds a new sonf to the end of the queue instead of stopping the current music and playing the new song.

😅 Thanks a lot!

Possible to create shortcuts??

Tried to create shortcuts for commands such as !p instead of !play, !q instead of !queue, !s instead of skip etc. etc. (I've changed the prefix to !).

I can't see any way to create these shortcuts. I tried to see if the preset feature would allow that, but I must be getting something wrong with the syntax, or the feature doesn't allow it.

I thought it would've been as simple as "!preset play !as p" (again, I've changed both prefix to !). But it tells me preset does not have a variable.

Need help with always on bot

Hi, I would need some help to host the bot on a server, if you know how, could you help me? I do not know anything about this. Sorry

Multi-line commands

I've just started using this bot in my servers and I think it's super powerful and am very happy to have found it. In my testing it out, I found this issue and I was so glad to see that it was open source! Heres the issue:
There's been a couple times where I've accidentally lost my queue by using $botify play ... (an issue about this), and I've tried to restore the queue by copying a bunch of my $botify queue ... commands into a message and sending it. The bot returned to me a parsing error. Here's an example.
If this was the message I sent to the bot (one message, not multiple):

$botify queue Empire State Of Mind artist:JAY-Z
$botify queue MONTERO artist:Lil Nas X
$botify queue Sense artist:King Gizz
$botify queue Mars For The Rich
$botify queue Under the Bridge artist:Red
$botify queue Somebody that i used to know artist:gotye

It responds with:

Invalid command
Undefined argument 'botify' on command 'queue'.
...f Mind artist:JAY-Z
$botify queue MONTER...
                       ^
Failed at: 34

Is this not supposed to be an argument? Botify interpreted it as one because it started with the argument prefix ('$' or your custom argument prefix defined with the property command). If this was a mistake and the argument prefix is supposed to be part of the command input you can escape the prefix by putting a \ in front of it. E.g. play $spotify \$trackname.

This seems like a pretty easy fix. Rather than parsing a whole message as a single command, Split the message by newlines and parse each line as a command.

def on_message(msg):
    commands = msg.splitlines()
    for command in commands:
        parse_and_run(command)

Obviously this pseudocode simplifies, but this would be the type of fix needed. (I would write it myself and send a PR, but I don't know java 🙁)

what should i do?

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project botify: Fatal error compiling: invalid target release: 11 -> [Help 1]
image

Allow setting the default volume

Often, the music bot is too loud at first and I set the volume to 10 each time. Having it as 10% as default would be nice! I know that you can change the default volume for yourself but that doesn't change others' settings and new users would get blasted with the loud music the first time they joined.

Execution failed for task ':bootRun'.

Hi,
I'm getting some issues when trying to run Botify. When I try to run it with either Gradlew or Gradle, I'm getting the error that bootRun doesn't excist. Here is the error:
PS C:\Botify> ./gradlew bootRun

Task :bootRun FAILED

          .~mw,.
       . 7NNNNNNNNm      gNNNNNm,                                                                     ..          ,,,,
       NNNm,"""7NNNNb   NNNNNNNN".w             #NNN                                      .,,,       NNNN      .NNNNNNE
       NNNNNb   /NNNNb  ANNNb   NNNN            #NNN                                      (NNN       "NM"      NNNE
        7NNNNNNNNNNNNE   7NNNNN#NNNN            #NNN   .,,,.              .,,,,.          #NNN                jNNNC
          7NNNNNNNNN"  (N  "NNNNNNNE            #NNN,#NNNNNNNNm       .#NNNNNNNNNNm    (NNNNNNNNNL   NNNN   NNNNNNNNNN   NNNb       (NNN
                      dNNNNw                    #NNNN"`   '7NNNN,    #NNNM"    "NNNNb     (NNN       NNNN     jNNNC      NNNb       (NNN
                    `"NNNNNNM" .,,.             #NNN         NNNN   #NNNC        (NNNb    (NNN       NNNN     jNNNC      NNNb       (NNN
           .#NNNNNNNNm  "NN  #NNNNNNNW,         #NNN         (NNN   NNNN          NNNN    (NNN       NNNN     jNNNC      NNNb       (NNN
          #NNNNNNNNNNNNN  7 #NNNNNNNNNNN        #NNN         #NNN   #NNN         .NNNE    (NNN       NNNN     jNNNC      NNNb       (NNN
         #NNNNNN" "NNNNNN   #NNNN-   NNNN       #NNNw       #NNNE    #NNN,      ,NNNN     (NNN       NNNN     jNNNC      NNNN,    .gNNNN
         #NNNNN,    NNNNNb   NNNNNw.. 7NNL      #NNNNNNNNNNNNNN'      7NNNNNNNNNNNNC      `NNNNNNN   NNNN     jNNNC      ?NNNNNNNNNM7NNN
          NNNNE ,mm#NNNNNL    7NNNNNNNNw``      *===  "7MNNM"`           "7MNRM="           7MNNM"   ====      ===         '7""""   (NNN
           NM .#NNNNNNNNN       "NNNNNNN"                                                                                 w        .NNNN
             ^NNNNNNNNM"                                                                                                 NNNNN###NNNNN"
                                                                                                                           "*MNNMM=7

:: Spring Boot :: v2.2.1.RELEASE
INFO 2020-10-30 16:57:39,222 [main] org.springframework.boot.StartupInfoLogger: Starting SpringBootstrap on Matthijs-PC with PID 4344 (C:\Botify\build\classes\java\main started by boeke in C:\Botify)
INFO 2020-10-30 16:57:39,225 [main] org.springframework.boot.SpringApplication: No active profile set, falling back to default profiles: default
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
at org.codehaus.groovy.vmplugin.VMPluginFactory.(VMPluginFactory.java:43)
at org.codehaus.groovy.reflection.GroovyClassValueFactory.(GroovyClassValueFactory.java:35)
at org.codehaus.groovy.reflection.ClassInfo.(ClassInfo.java:107)
at org.codehaus.groovy.reflection.ReflectionCache.getCachedClass(ReflectionCache.java:95)
at org.codehaus.groovy.reflection.ReflectionCache.(ReflectionCache.java:39)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerMethods(MetaClassRegistryImpl.java:210)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.(MetaClassRegistryImpl.java:108)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.(MetaClassRegistryImpl.java:86)
at groovy.lang.GroovySystem.(GroovySystem.java:36)
at org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader.(GroovyBeanDefinitionReader.java:150)
at org.springframework.boot.BeanDefinitionLoader.(BeanDefinitionLoader.java:85)
at org.springframework.boot.SpringApplication.createBeanDefinitionLoader(SpringApplication.java:738)
at org.springframework.boot.SpringApplication.load(SpringApplication.java:681)
at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:392)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at net.robinfriedli.botify.boot.SpringBootstrap.main(SpringBootstrap.java:26)
WARN 2020-10-30 16:57:39,310 [background-preinit] org.springframework.core.log.CompositeLog: For Jackson Kotlin classes support please add "com.fasterxml.jackson.module:jackson-module-kotlin" to the classpath
ERROR 2020-10-30 16:57:39,323 [main] org.springframework.boot.SpringApplication: Application run failed
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache
at org.codehaus.groovy.runtime.dgmimpl.NumberNumberMetaMethod.(NumberNumberMetaMethod.java:33)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.createMetaMethodFromClass(MetaClassRegistryImpl.java:258)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.(MetaClassRegistryImpl.java:111)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.(MetaClassRegistryImpl.java:86)
at groovy.lang.GroovySystem.(GroovySystem.java:36)
at org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader.(GroovyBeanDefinitionReader.java:150)
at org.springframework.boot.BeanDefinitionLoader.(BeanDefinitionLoader.java:85)
at org.springframework.boot.SpringApplication.createBeanDefinitionLoader(SpringApplication.java:738)
at org.springframework.boot.SpringApplication.load(SpringApplication.java:681)
at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:392)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at net.robinfriedli.botify.boot.SpringBootstrap.main(SpringBootstrap.java:26)
ERROR 2020-10-30 16:57:39,324 [main] net.robinfriedli.botify.boot.SpringBootstrap: Exception starting SpringApplication, AppContext could not be created.
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache
at org.codehaus.groovy.runtime.dgmimpl.NumberNumberMetaMethod.(NumberNumberMetaMethod.java:33)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.createMetaMethodFromClass(MetaClassRegistryImpl.java:258)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.(MetaClassRegistryImpl.java:111)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.(MetaClassRegistryImpl.java:86)
at groovy.lang.GroovySystem.(GroovySystem.java:36)
at org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader.(GroovyBeanDefinitionReader.java:150)
at org.springframework.boot.BeanDefinitionLoader.(BeanDefinitionLoader.java:85)
at org.springframework.boot.SpringApplication.createBeanDefinitionLoader(SpringApplication.java:738)
at org.springframework.boot.SpringApplication.load(SpringApplication.java:681)
at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:392)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at net.robinfriedli.botify.boot.SpringBootstrap.main(SpringBootstrap.java:26)

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':bootRun'.

Process 'command 'C:\Program Files\Java\jdk-15.0.1\bin\java.exe'' finished with non-zero exit value 1

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 3s
3 actionable tasks: 1 executed, 2 up-to-date

Bot is playing the wrong song when playing a Spotify playlist

Hey all,
Ran this command: $botify play $spotify $list $own PlaylistName

however it seems that every other song is the incorrect song.

The queue seems to list them properly, or as songs that exist in the queue. For instance, of the songs below, Dirty Laundry is played, but the wrong version. The Fugue is instead Sunshine by Squashy Nice, so completely different. Viices is also some overlay. Pixel Dust is played correctly though.

Previous
| The Fugue by Dj T-Rock & Squashy Nice - 04:14
Current
| Dirty Laundry - Heavy Load by Laura Silberberg, Skratch Bastid, Afiara Quartet - 02:53 / 05:06
Next
| Viices (Instrumental) by Made in Heights, Sabzi - 03:50
| Pixel Dust by Hat Films - 04:43

The only reasonable reason I could think of for this is that Botify is, on the back end, not playing the spotify playlist, but is instead grabbing metadata from the playlist, searching for the song, and finding the wrong one.

Volume command fails with java.lang.UnsatisfiedLinkError on AArch64

Using the volume command while a track is playing causes LavaPlayer to throw an UnsatisfiedLinkError exception which stops playback.

It seems to work fine after adding lavaplayer-natives-extra as a dependency as mentioned in the LavaPlayer FAQ, but I had to download the artifact from the link in this issue as it's not in any repository in the POM.

I'm running Botify on an Oracle Cloud Ampere Altra A1 instance with a fully updated version of Ubuntu 20.04 and openjdk 11.0.11 2021-04-20.

Adding Remote Control

Hello !

This would be amazing if you could add the Spotify Remote control, so we can control the bot music flow with the Spotify App!

PS : I LOVE THIS BOT
Regards, a french developper

Concatenating Preset Commands

Hello everyone!

I just discover this awesome bot. I think it's the best option in the market but, could be nice have an extra feature when you are creating presets.

In my case, I look for some preset that execute two o more commands in one single preset. for example, I trying to create a custom command that can jump to a specific sogn of my play list without lost the queue of my playlist. Here is the preset:

$botify preset play %s && $as add \$spotify \$list <playlist_url> $as jump

And you can execute as

$botify jump <song_name>

So, as you notice, I'm trying to concat two commands using && but this is not still posible, so, the request for this issue it's bsically add support to contact commands when you are creating a preset.

Thank you!

Not really a issue but a question.

Sorry for asking here, but I don't know any other to contact you. I tried to clone the repository and made my bot for my server, and I'm curios that is there a way to make the bot stay in the voice channel, even if no people is in it. It will pause when all people left the voice chat and start playing music again when one enters. Is there a way to add to the current codes to make this happen?

error when launching

Hi so today i tried to install botify but when i try launch botify with mvn exec:java -D"exec.mainClass"="net.robinfriedli.botify.boot.Launcher" and other commands linked in the tutorial i get this:
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for botify:botify:jar:1.0-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 15, column 15
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ---------------------------< botify:botify >----------------------------
[INFO] Building botify 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec-maven-plugin:3.0.0:java (default-cli) @ botify ---
[INFO ] 2021-09-16 18:10:55.843 [net.robinfriedli.botify.boot.Launcher.main()] Launcher - Using java version 16.0.2+7-67
[INFO ] 2021-09-16 18:10:55.950 [net.robinfriedli.botify.boot.Launcher.main()] Version - HHH000412: Hibernate ORM core version 5.4.21.Final
[INFO ] 2021-09-16 18:10:56.415 [net.robinfriedli.botify.boot.Launcher.main()] Version - HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
[INFO ] 2021-09-16 18:10:56.572 [net.robinfriedli.botify.boot.Launcher.main()] C3P0ConnectionProvider - HHH010002: C3P0 using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost:5432/botify_playlists
[INFO ] 2021-09-16 18:10:56.572 [net.robinfriedli.botify.boot.Launcher.main()] C3P0ConnectionProvider - HHH10001001: Connection properties: {password=, user=postgres}
[INFO ] 2021-09-16 18:10:56.573 [net.robinfriedli.botify.boot.Launcher.main()] C3P0ConnectionProvider - HHH10001003: Autocommit mode: false
[INFO ] 2021-09-16 18:10:56.601 [MLog-Init-Reporter] MLog - MLog clients using slf4j logging.
[INFO ] 2021-09-16 18:10:56.669 [net.robinfriedli.botify.boot.Launcher.main()] C3P0Registry - Initializing c3p0-0.9.5.4 [built 23-March-2019 23:00:48 -0700; debug? true; trace: 10]
[INFO ] 2021-09-16 18:10:56.701 [net.robinfriedli.botify.boot.Launcher.main()] C3P0ConnectionProvider - HHH10001007: JDBC isolation level:
[INFO ] 2021-09-16 18:10:56.715 [net.robinfriedli.botify.boot.Launcher.main()] AbstractPoolBackedDataSource - Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@ff965fc7 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@61656453 [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, identityToken -> 1hgeaxhaj1uf1x4motzr4r|738622d2, idleConnectionTestPeriod -> 0, initialPoolSize -> 5, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 1800, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 50, maxStatements -> 50, maxStatementsPerConnection -> 0, minPoolSize -> 5, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@1d2648ab [ description -> null, driverClass -> null, factoryClassLocation -> null, forceUseNamedDriverClass -> false, identityToken -> 1hgeaxhaj1uf1x4motzr4r|31dc42c8, jdbcUrl -> jdbc:postgresql://localhost:5432/botify_playlists, properties -> {password=
, user=****} ], preferredTestQuery -> null, privilegeSpawnedThreads -> false, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, extensions -> {}, factoryClassLocation -> null, identityToken -> 1hgeaxhaj1uf1x4motzr4r|2dc0f946, numHelperThreads -> 3 ]
[WARN ] 2021-09-16 18:11:26.958 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#2] BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1759f345 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.jdbc.PgConnection.(PgConnection.java:225) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.18.jar:42.2.18]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908) [c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) [mchange-commons-java-0.2.15.jar:0.2.15]
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
at sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[?:?]
at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:549) ~[?:?]
at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[?:?]
at java.net.Socket.connect(Socket.java:645) ~[?:?]
at org.postgresql.core.PGStream.createSocket(PGStream.java:231) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.PGStream.(PGStream.java:95) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.18.jar:42.2.18]
... 13 more
[WARN ] 2021-09-16 18:11:26.958 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#0] BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@16b291f1 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.jdbc.PgConnection.(PgConnection.java:225) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.18.jar:42.2.18]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908) [c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) [mchange-commons-java-0.2.15.jar:0.2.15]
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
at sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[?:?]
at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[?:?]
at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[?:?]
at java.net.Socket.connect(Socket.java:645) ~[?:?]
at org.postgresql.core.PGStream.createSocket(PGStream.java:231) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.PGStream.(PGStream.java:95) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.18.jar:42.2.18]
... 13 more
[WARN ] 2021-09-16 18:11:26.958 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#1] BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@7f025335 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.jdbc.PgConnection.(PgConnection.java:225) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.18.jar:42.2.18]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908) [c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) [mchange-commons-java-0.2.15.jar:0.2.15]
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
at sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[?:?]
at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[?:?]
at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[?:?]
at java.net.Socket.connect(Socket.java:645) ~[?:?]
at org.postgresql.core.PGStream.createSocket(PGStream.java:231) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.PGStream.(PGStream.java:95) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.18.jar:42.2.18]
... 13 more
[WARN ] 2021-09-16 18:11:26.972 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#2] BasicResourcePool - Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@26c87534 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
[WARN ] 2021-09-16 18:11:26.979 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#1] BasicResourcePool - Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@26c87534 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
[WARN ] 2021-09-16 18:11:26.979 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#0] BasicResourcePool - Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@26c87534 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
[WARN ] 2021-09-16 18:11:26.980 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#2] BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1566ed0b -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.jdbc.PgConnection.(PgConnection.java:225) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.18.jar:42.2.18]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908) [c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) [mchange-commons-java-0.2.15.jar:0.2.15]
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
at sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[?:?]
at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[?:?]
at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[?:?]
at java.net.Socket.connect(Socket.java:645) ~[?:?]
at org.postgresql.core.PGStream.createSocket(PGStream.java:231) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.PGStream.(PGStream.java:95) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.18.jar:42.2.18]
... 13 more
[WARN ] 2021-09-16 18:11:26.982 [net.robinfriedli.botify.boot.Launcher.main()] JdbcEnvironmentInitiator - HHH000342: Could not obtain connection to query metadata : Connections could not be acquired from the underlying database!
[WARN ] 2021-09-16 18:11:26.982 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#2] BasicResourcePool - Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@26c87534 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
[INFO ] 2021-09-16 18:11:27.005 [net.robinfriedli.botify.boot.Launcher.main()] Dialect - HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL94Dialect
[WARN ] 2021-09-16 18:11:27.044 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#1] BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3ec9a1c -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.jdbc.PgConnection.(PgConnection.java:225) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.18.jar:42.2.18]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908) [c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) [mchange-commons-java-0.2.15.jar:0.2.15]
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
at sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[?:?]
at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[?:?]
at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[?:?]
at java.net.Socket.connect(Socket.java:645) ~[?:?]
at org.postgresql.core.PGStream.createSocket(PGStream.java:231) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.PGStream.(PGStream.java:95) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.18.jar:42.2.18]
... 13 more
[WARN ] 2021-09-16 18:11:27.047 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#1] BasicResourcePool - Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@26c87534 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
[INFO ] 2021-09-16 18:11:27.598 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'default-update-timestamps-region' created in EhcacheManager.
[INFO ] 2021-09-16 18:11:27.620 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'default-query-results-region' created in EhcacheManager.
[INFO ] 2021-09-16 18:11:27.681 [net.robinfriedli.botify.boot.Launcher.main()] Version - HV000001: Hibernate Validator 5.4.3.Final
[INFO ] 2021-09-16 18:11:27.899 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'net.robinfriedli.botify.entities.AccessConfiguration.roles' created in EhcacheManager.
[INFO ] 2021-09-16 18:11:27.907 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'net.robinfriedli.botify.entities.Preset' created in EhcacheManager.
[INFO ] 2021-09-16 18:11:27.915 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'net.robinfriedli.botify.entities.AccessConfiguration' created in EhcacheManager.
[INFO ] 2021-09-16 18:11:27.919 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'net.robinfriedli.botify.entities.GuildSpecification' created in EhcacheManager.
[WARN ] 2021-09-16 18:11:58.757 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#2] BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@61daf001 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.jdbc.PgConnection.(PgConnection.java:225) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.18.jar:42.2.18]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908) [c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) [mchange-commons-java-0.2.15.jar:0.2.15]
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
at sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[?:?]
at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[?:?]
at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[?:?]
at java.net.Socket.connect(Socket.java:645) ~[?:?]
at org.postgresql.core.PGStream.createSocket(PGStream.java:231) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.PGStream.(PGStream.java:95) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.18.jar:42.2.18]
... 13 more
[WARN ] 2021-09-16 18:11:58.758 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#2] BasicResourcePool - Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@26c87534 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
[WARN ] 2021-09-16 18:11:58.759 [net.robinfriedli.botify.boot.Launcher.main()] SqlExceptionHelper - SQL Error: 0, SQLState: null
[ERROR] 2021-09-16 18:11:58.760 [net.robinfriedli.botify.boot.Launcher.main()] SqlExceptionHelper - Connections could not be acquired from the underlying database!
[WARN ] 2021-09-16 18:11:58.763 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#1] BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@19b222a3 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.jdbc.PgConnection.(PgConnection.java:225) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.18.jar:42.2.18]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908) [c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) [mchange-commons-java-0.2.15.jar:0.2.15]
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
at sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[?:?]
at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[?:?]
at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[?:?]
at java.net.Socket.connect(Socket.java:645) ~[?:?]
at org.postgresql.core.PGStream.createSocket(PGStream.java:231) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.PGStream.(PGStream.java:95) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.18.jar:42.2.18]
... 13 more
[WARN ] 2021-09-16 18:11:58.766 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#1] BasicResourcePool - Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@26c87534 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
[WARN ] 2021-09-16 18:11:58.767 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#0] BasicResourcePool - com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@ac67aad -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.jdbc.PgConnection.(PgConnection.java:225) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.18.jar:42.2.18]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908) [c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) [mchange-commons-java-0.2.15.jar:0.2.15]
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
at sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[?:?]
at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[?:?]
at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[?:?]
at java.net.Socket.connect(Socket.java:645) ~[?:?]
at org.postgresql.core.PGStream.createSocket(PGStream.java:231) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.PGStream.(PGStream.java:95) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.18.jar:42.2.18]
... 13 more
[INFO ] 2021-09-16 18:11:58.768 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'default-query-results-region' removed from EhcacheManager.
[WARN ] 2021-09-16 18:11:58.769 [C3P0PooledConnectionPoolManager[identityToken->1hgeaxhaj1uf1x4motzr4r|2dc0f946]-HelperThread-#0] BasicResourcePool - Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@26c87534 is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
[INFO ] 2021-09-16 18:11:58.769 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'net.robinfriedli.botify.entities.Preset' removed from EhcacheManager.
[INFO ] 2021-09-16 18:11:58.770 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'net.robinfriedli.botify.entities.GuildSpecification' removed from EhcacheManager.
[INFO ] 2021-09-16 18:11:58.771 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'net.robinfriedli.botify.entities.AccessConfiguration.roles' removed from EhcacheManager.
[INFO ] 2021-09-16 18:11:58.772 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'net.robinfriedli.botify.entities.AccessConfiguration' removed from EhcacheManager.
[INFO ] 2021-09-16 18:11:58.781 [net.robinfriedli.botify.boot.Launcher.main()] EhcacheManager - Cache 'default-update-timestamps-region' removed from EhcacheManager.
[ERROR] 2021-09-16 18:11:58.784 [net.robinfriedli.botify.boot.Launcher.main()] Launcher - Exception in starter. Application will terminate.
org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:69) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl.getJdbcConnection(ImprovedExtractionContextImpl.java:60) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorLegacyImpl.extractMetadata(SequenceInformationExtractorLegacyImpl.java:40) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.initializeSequences(DatabaseInformationImpl.java:65) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.(DatabaseInformationImpl.java:59) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.tool.schema.internal.Helper.buildDatabaseInformation(Helper.java:155) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:96) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:184) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:73) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:316) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:469) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.boot.internal.MetadataImpl.buildSessionFactory(MetadataImpl.java:195) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at net.robinfriedli.botify.boot.Launcher.main(Launcher.java:118) [classes/:?]
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:254) [exec-maven-plugin-3.0.0.jar:?]
at java.lang.Thread.run(Thread.java:831) [?:?]
Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118) ~[mchange-commons-java-0.2.15.jar:0.2.15]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:692) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at org.hibernate.c3p0.internal.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:72) ~[hibernate-c3p0-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:43) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
... 14 more
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1507) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at org.hibernate.c3p0.internal.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:72) ~[hibernate-c3p0-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl.getIsolatedConnection(DdlTransactionIsolatorNonJtaImpl.java:43) ~[hibernate-core-5.4.21.Final.jar:5.4.21.Final]
... 14 more
Caused by: org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.jdbc.PgConnection.(PgConnection.java:225) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.18.jar:42.2.18]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) ~[mchange-commons-java-0.2.15.jar:0.2.15]
Caused by: java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
at sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[?:?]
at sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[?:?]
at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[?:?]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[?:?]
at java.net.Socket.connect(Socket.java:645) ~[?:?]
at org.postgresql.core.PGStream.createSocket(PGStream.java:231) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.PGStream.(PGStream.java:95) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.jdbc.PgConnection.(PgConnection.java:225) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.makeConnection(Driver.java:465) ~[postgresql-42.2.18.jar:42.2.18]
at org.postgresql.Driver.connect(Driver.java:264) ~[postgresql-42.2.18.jar:42.2.18]
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908) ~[c3p0-0.9.5.4.jar:0.9.5.4]
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) ~[mchange-commons-java-0.2.15.jar:0.2.15]

with a crash... how can i fix this?

Playing album

I noticed that when using the Spotify search syntax for an album, it will only play the first song in the album.
Is it possible to play the entire album (like a playlist) if no song is specified?

For example:

$botify play $spotify artist:linkin park album:meteora

Otherwise, I don't see a way to play an entire album without first going to Spotify and adding the album to a private playlist.

We've been really enjoying the bot so far!

Filters

Hey, Just a feature request.

Please add filters like bassboost,8d etc.

Incorrect track plays

Whenever there are multiple songs with the same name it plays a random one and often times is not the actual song that I want. It seems to ignore the artist name so there might be some way to fix it using that.

Need documentation

Hello robin!

I need some help getting this setup.

What permissions under discord does this bot need?

What do I do to get the bot to join the discord server?

Is there an entire list of commands available?

Can't play own playlists anymore

Hello, i can't use the $own command anymore.

Everything else works fine except when i try to use my own spotify playlists with the command :

$botify play $spotify $list $own playlist name

I get this message from the bot :

Exception
NullPointerException: null
CommandContext ID
5730c06d-eb07-4f26-a9f0-50a403236fd7

Am i doing something wrong ?

(i already checked that i am logged with the bot and still not working)

Bot not responding to commands

I have the bot all setup and running, but it seems to not respond to its commands in chat at all. It has proper server permissions, same as the official bot, and the role it's in also has proper permissions as well. It gave the Getting Started initial spiel when added into my server, but beyond that, it's just dead in server. Back end I can see it's interacting with the SQL server. Only warning in log is that discordbots.org is not setup, which is correct, I don't want this a public bot.

Unable to run project

I have installed all the necessary softwares and followed all the steps but the localhost:8000 shows 404 not found No context found for request and log found in resources/logs are as follows

[INFO ] 2021-02-18 00:08:04.327 [net.robinfriedli.botify.boot.Launcher.main()] Launcher - Using java version 11.0.10+8-LTS-162 [WARN ] 2021-02-18 00:08:09.287 [net.robinfriedli.botify.boot.Launcher.main()] Launcher - discordbots.org api not set up, missing properties [INFO ] 2021-02-18 00:08:09.353 [net.robinfriedli.botify.boot.Launcher.main()] Launcher - Using NativeAudioSendFactory with a buffer duration of 400ms [INFO ] 2021-02-18 00:08:11.809 [net.robinfriedli.botify.boot.Launcher.main()] RunLiquibaseUpdateTask - Beginning liquibase update [INFO ] 2021-02-18 00:08:14.663 [net.robinfriedli.botify.boot.Launcher.main()] RunLiquibaseUpdateTask - Liquibase update done [INFO ] 2021-02-18 00:08:15.099 [net.robinfriedli.botify.boot.Launcher.main()] Botify - Registered listeners [INFO ] 2021-02-18 00:08:15.100 [net.robinfriedli.botify.boot.Launcher.main()] Launcher - All starters done

`play` wipes queue

I've just started using this bot in my servers and I think it's super powerful and am very happy to have found it. In my testing it out, I found this issue and I was so glad to see that it was open source! Heres the issue:
There's been a couple of times when I wanted to play a song right away, instead of adding it to the queue, so I used $botify play ... to attempt to do this. After doing this, I was a bit bothered to see that my whole queue had been wiped! I understand a full fix to this (preserving the queue and inserting the song at the top) may require the implementation of insertion of songs into the queue, and thus might be part of v2.0. However, this behavior makes the play command a risk; especially if it is used by accident. Until this could be fixed fully, a warning speedbump with this sort of message:

There are multiple songs enqueued. Remove them from the queue and play {song name} ?
(If you would like to instead add {song name} to the queue, use $botify queue {song name}.)

would be helpful.

DBL-Java-Library 403 Forbidden

After running mvn clean install i get the following error:

[ERROR] Failed to execute goal on project botify: Could not resolve dependencies
for project botify:botify:jar:1.0-SNAPSHOT: Failed to collect dependencies at
org.discordbots:DBL-Java-Library:jar:2.0.1: Failed to read artifact descriptor for
org.discordbots:DBL-Java-Library:jar:2.0.1: Could not transfer artifact
org.discordbots:DBL-Java-Library:pom:2.0.1 from/to sedmelluq-bintray
(https://dl.bintray.com/sedmelluq/com.sedmelluq): Authorization failed for
https://dl.bintray.com/sedmelluq/com.sedmelluq/org/discordbots/DBL-Java-Library/2.0.1/DBL-Java-Library-2.0.1.pom
403 Forbidden

The site https://dl.bintray.com/sedmelluq/com.sedmelluq/org/discordbots/DBL-Java-Library/2.0.1/DBL-Java-Library-2.0.1.pom returns a 403 Forbidden Error

[ERROR] 2021-09-27 12:25:23.188 [main] Launcher - Exception in starter. Application will terminate.

user@crazed:~/botify# java -jar target/botify-1.0-SNAPSHOT.jar
[INFO ] 2021-09-27 12:25:02.777 [main] Launcher - Using java version 11.0.11+9-U buntu-0ubuntu2.20.04
[INFO ] 2021-09-27 12:25:02.985 [main] Version - HHH000412: Hibernate ORM core v ersion [WORKING]
[INFO ] 2021-09-27 12:25:03.953 [main] Version - HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
[INFO ] 2021-09-27 12:25:04.133 [main] C3P0ConnectionProvider - HHH010002: C3P0 using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost:5432/bot ify_playlists
[INFO ] 2021-09-27 12:25:04.134 [main] C3P0ConnectionProvider - HHH10001001: Con nection properties: {password=, user=botify}
[INFO ] 2021-09-27 12:25:04.134 [main] C3P0ConnectionProvider - HHH10001003: Aut ocommit mode: false
[INFO ] 2021-09-27 12:25:04.181 [MLog-Init-Reporter] MLog - MLog clients using s lf4j logging.
[INFO ] 2021-09-27 12:25:04.345 [main] C3P0Registry - Initializing c3p0-0.9.5.4 [built 23-March-2019 23:00:48 -0700; debug? true; trace: 10]
[INFO ] 2021-09-27 12:25:04.421 [main] C3P0ConnectionProvider - HHH10001007: JDB C isolation level:
[INFO ] 2021-09-27 12:25:04.481 [main] AbstractPoolBackedDataSource - Initializi ng c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@935dd807 [ connectionPo olDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@4837f738 [ a cquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, aut oCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionT esterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClass LoaderSource -> caller, debugUnreturnedConnectionStackTraces -> false, factoryCl assLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronou sCheckins -> false, identityToken -> 1brb0vqakapaa2tl28x6s|43826ec, idleConnecti onTestPeriod -> 0, initialPoolSize -> 5, maxAdministrativeTaskTime -> 0, maxConn ectionAge -> 0, maxIdleTime -> 1800, maxIdleTimeExcessConnections -> 0, maxPoolS ize -> 50, maxStatements -> 50, maxStatementsPerConnection -> 0, minPoolSize -> 5, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@9572cb33 [ de scription -> null, driverClass -> null, factoryClassLocation -> null, forceUseNa medDriverClass -> false, identityToken -> 1brb0vqakapaa2tl28x6s|1c025cb, jdbcUrl -> jdbc:postgresql://localhost:5432/botify_playlists, properties -> {password=
, user=
} ], preferredTestQuery -> null, privilegeSpawnedThreads -> fa lse, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnect ionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTi meout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], data SourceName -> null, extensions -> {}, factoryClassLocation -> null, identityToke n -> 1brb0vqakapaa2tl28x6s|1542af63, numHelperThreads -> 3 ]
[INFO ] 2021-09-27 12:25:05.568 [main] Dialect - HHH000400: Using dialect: org.h ibernate.dialect.PostgreSQL94Dialect
[INFO ] 2021-09-27 12:25:07.094 [main] EhcacheManager - Cache 'default-update-timestamps-region' created in EhcacheManager.
[INFO ] 2021-09-27 12:25:07.138 [main] EhcacheManager - Cache 'default-query-results-region' created in EhcacheManager.
[INFO ] 2021-09-27 12:25:07.208 [main] Version - HV000001: Hibernate Validator null
[INFO ] 2021-09-27 12:25:07.660 [main] EhcacheManager - Cache 'net.robinfriedli.botify.entities.AccessConfiguration' created in EhcacheManager.
[INFO ] 2021-09-27 12:25:07.680 [main] EhcacheManager - Cache 'net.robinfriedli.botify.entities.AccessConfiguration.roles' created in EhcacheManager.
[INFO ] 2021-09-27 12:25:07.699 [main] EhcacheManager - Cache 'net.robinfriedli.botify.entities.Preset' created in EhcacheManager.
[INFO ] 2021-09-27 12:25:07.712 [main] EhcacheManager - Cache 'net.robinfriedli.botify.entities.GuildSpecification' created in EhcacheManager.
[INFO ] 2021-09-27 12:25:09.397 [main] access - HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@7e691624] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
[WARN ] 2021-09-27 12:25:11.044 [main] Launcher - discordbots.org api not set up, missing properties
[INFO ] 2021-09-27 12:25:11.181 [main] Launcher - Using NativeAudioSendFactory with a buffer duration of 400ms
[INFO ] 2021-09-27 12:25:12.262 [main] ShardManager - Login Successful!
[INFO ] 2021-09-27 12:25:13.042 [JDA [0 / 1] MainWS-ReadThread] WebSocketClient - Connected to WebSocket
[INFO ] 2021-09-27 12:25:13.239 [main] RunLiquibaseUpdateTask - Beginning liquibase update
[INFO ] 2021-09-27 12:25:13.666 [JDA [0 / 1] MainWS-ReadThread] JDA - Finished Loading!
[INFO ] 2021-09-27 12:25:17.871 [main] JdbcExecutor - SELECT COUNT(
) FROM public.databasechangeloglock
[INFO ] 2021-09-27 12:25:17.881 [main] JdbcExecutor - SELECT COUNT(
) FROM public.databasechangeloglock
[INFO ] 2021-09-27 12:25:17.884 [main] JdbcExecutor - SELECT LOCKED FROM public.databasechangeloglock WHERE ID=1
[INFO ] 2021-09-27 12:25:17.955 [main] StandardLockService - Successfully acquired change log lock
[INFO ] 2021-09-27 12:25:17.965 [main] ServiceLocator - Can not use class liquibase.parser.core.json.JsonChangeLogParser as a Liquibase service because org.yaml.snakeyaml.constructor.BaseConstructor is not in the classpath
[INFO ] 2021-09-27 12:25:17.977 [main] ServiceLocator - Can not use class liquibase.parser.core.yaml.YamlChangeLogParser as a Liquibase service because org.yaml.snakeyaml.constructor.BaseConstructor is not in the classpath
[INFO ] 2021-09-27 12:25:22.440 [main] JdbcExecutor - SELECT MD5SUM FROM public.databasechangelog WHERE MD5SUM IS NOT NULL LIMIT 1
[INFO ] 2021-09-27 12:25:22.452 [main] JdbcExecutor - SELECT COUNT() FROM public.databasechangelog
[INFO ] 2021-09-27 12:25:22.454 [main] StandardChangeLogHistoryService - Reading from public.databasechangelog
[INFO ] 2021-09-27 12:25:22.454 [main] JdbcExecutor - SELECT * FROM public.databasechangelog ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC
[INFO ] 2021-09-27 12:25:22.495 [main] StandardLockService - Successfully released change log lock
[INFO ] 2021-09-27 12:25:22.496 [main] JdbcExecutor - SELECT COUNT(
) FROM public.databasechangeloglock
[INFO ] 2021-09-27 12:25:22.499 [main] JdbcExecutor - SELECT COUNT() FROM public.databasechangeloglock
[INFO ] 2021-09-27 12:25:22.502 [main] JdbcExecutor - SELECT LOCKED FROM public.databasechangeloglock WHERE ID=1
[INFO ] 2021-09-27 12:25:22.510 [main] StandardLockService - Successfully acquired change log lock
[INFO ] 2021-09-27 12:25:22.576 [main] JdbcExecutor - SELECT MD5SUM FROM public.databasechangelog WHERE MD5SUM IS NOT NULL LIMIT 1
[INFO ] 2021-09-27 12:25:22.578 [main] JdbcExecutor - SELECT COUNT(
) FROM public.databasechangelog
[INFO ] 2021-09-27 12:25:22.581 [main] StandardChangeLogHistoryService - Reading from public.databasechangelog
[INFO ] 2021-09-27 12:25:22.581 [main] JdbcExecutor - SELECT * FROM public.databasechangelog ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC
[INFO ] 2021-09-27 12:25:22.600 [main] JdbcExecutor - select count(*) from current_youtube_quota_usage
[INFO ] 2021-09-27 12:25:22.602 [main] ChangeSet - Marking ChangeSet: src/main/resources/liquibase/dbchangelog.xml::create_current_youtube_quota_usage-sd23d/1.6.LTS::robinfriedli ran despite precondition failure due to onFail='MARK_RAN':
src/main/resources/liquibase/dbchangelog.xml : SQL Precondition failed. Expected '0' got '1'

[INFO ] 2021-09-27 12:25:22.605 [main] JdbcExecutor - SELECT MAX(ORDEREXECUTED) FROM public.databasechangelog
[INFO ] 2021-09-27 12:25:22.609 [main] JdbcExecutor - UPDATE public.databasechangelog SET DATEEXECUTED = NOW(), DEPLOYMENT_ID = '2734722587', EXECTYPE = 'RERAN', MD5SUM = '8:5e8d653fee3e0866588decdab589cef3', ORDEREXECUTED = 8 WHERE ID = 'create_current_youtube_quota_usage-sd23d/1.6.LTS' AND AUTHOR = 'robinfriedli' AND FILENAME = 'src/main/resources/liquibase/dbchangelog.xml'
[INFO ] 2021-09-27 12:25:22.615 [main] JdbcExecutor - select count(*) from spotify_redirect_index_modification_lock
[INFO ] 2021-09-27 12:25:22.618 [main] ChangeSet - Marking ChangeSet: src/main/resources/liquibase/dbchangelog.xml::delete_existing_spotify_redirect_index_modification_locks-sd23f/1.6.LTS::robinfriedli ran despite precondition failure due to onFail='MARK_RAN':
src/main/resources/liquibase/dbchangelog.xml : Not precondition failed

[INFO ] 2021-09-27 12:25:22.622 [main] JdbcExecutor - UPDATE public.databasechangelog SET DATEEXECUTED = NOW(), DEPLOYMENT_ID = '2734722587', EXECTYPE = 'RERAN', MD5SUM = '8:1dc743cd6e4a70b25168d913e150a1a7', ORDEREXECUTED = 9 WHERE ID = 'delete_existing_spotify_redirect_index_modification_locks-sd23f/1.6.LTS' AND AUTHOR = 'robinfriedli' AND FILENAME = 'src/main/resources/liquibase/dbchangelog.xml'
[INFO ] 2021-09-27 12:25:22.630 [main] StandardLockService - Successfully released change log lock
[INFO ] 2021-09-27 12:25:22.631 [main] JdbcExecutor - SELECT COUNT() FROM public.databasechangeloglock
[INFO ] 2021-09-27 12:25:22.632 [main] JdbcExecutor - SELECT COUNT(
) FROM public.databasechangeloglock
[INFO ] 2021-09-27 12:25:22.633 [main] JdbcExecutor - SELECT LOCKED FROM public.databasechangeloglock WHERE ID=1
[INFO ] 2021-09-27 12:25:22.644 [main] StandardLockService - Successfully acquired change log lock
[INFO ] 2021-09-27 12:25:22.702 [main] JdbcExecutor - SELECT MD5SUM FROM public.databasechangelog WHERE MD5SUM IS NOT NULL LIMIT 1
[INFO ] 2021-09-27 12:25:22.705 [main] JdbcExecutor - SELECT COUNT() FROM public.databasechangelog
[INFO ] 2021-09-27 12:25:22.708 [main] StandardChangeLogHistoryService - Reading from public.databasechangelog
[INFO ] 2021-09-27 12:25:22.708 [main] JdbcExecutor - SELECT * FROM public.databasechangelog ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC
[INFO ] 2021-09-27 12:25:22.727 [main] StandardLockService - Successfully released change log lock
[INFO ] 2021-09-27 12:25:22.729 [main] RunLiquibaseUpdateTask - Liquibase update done
[ERROR] 2021-09-27 12:25:23.188 [main] Launcher - Exception in starter. Application will terminate.
com.wrapper.spotify.exceptions.detailed.NotFoundException: Not Found
at com.wrapper.spotify.SpotifyHttpManager.getResponseBody(SpotifyHttpManager.java:326) ~[botify-1.0-SNAPSHOT.jar:?]
at com.wrapper.spotify.SpotifyHttpManager.post(SpotifyHttpManager.java:183) ~[botify-1.0-SNAPSHOT.jar:?]
at com.wrapper.spotify.requests.AbstractRequest.postJson(AbstractRequest.java:123) ~[botify-1.0-SNAPSHOT.jar:?]
at com.wrapper.spotify.requests.authorization.client_credentials.ClientCredentialsRequest.execute(ClientCredentialsRequest.java:36) ~[botify-1.0-SNAPSHOT.jar:?]
at net.robinfriedli.botify.boot.tasks.SetRedirectedSpotifyTrackNameTask.perform(SetRedirectedSpotifyTrackNameTask.java:52) ~[botify-1.0-SNAPSHOT.jar:?]
at net.robinfriedli.botify.boot.StartupTask.runTask(StartupTask.java:24) ~[botify-1.0-SNAPSHOT.jar:?]
at net.robinfriedli.botify.boot.Launcher.main(Launcher.java:230) [botify-1.0-SNAPSHOT.jar:?]
***

youtube playlist with "unplayable songs" results in crash

Dear botify team / robinfriedli,

we created a youtube playlist and wanted to play it with the botify bot on our discord server. At first, this went very well, no problems. However, yesterday the bot crashed due to "too many unplayable songs" in the queue and we could not get it running again. It also doesn't tell us, which songs are the problem, we would probably have to delete individual songs and each time try again if it works. Do you know a quick fix for this? The error message screenshot is attached.

Best wishes,
kuschinockl

Bildschirmfoto 2021-03-03 um 21 22 58

(releases/v1.6) Users not in voice can skip tracks.

Here's a quality of life issue that was just encountered by a user in my discord. Apparently a track was skipped by another user who was not within the voice channel. I haven't further investigated this myself, but it seems there's perhaps not a check to verify if a user interacting with the reactions is in voice channel.

is more a question

I really tried everything but how to change prefix??? Nothing seems to work

Needed Extra Permissions

Hello!

I tried to enter a command, and then was given a response that said I needed to give botify permission to read message history. It asked for a permission that wasn't automatically given when I first invited it to the server.

Bot Leaves Before Song Finishes

Hi There!

I recently finished setting this bot up in my lab. It is working correctly and playing songs from YouTube and Spotify. However the bot will disconnect about 15 seconds prematurely. Is this because I set the buffer to 15 seconds aiode.preferences.native_audio_buffer=15000 ? Or is that just coincidence? Also, is there any way to keep the bot in the chat even when there is are no songs in the queue?

Thank You!

Sound Quality

I am trying this bot out and I was comparing it with Hydra to check and I noticed sometimes in the middle of song Botify stutters or lags really bad when compared to Hydra.
Anyway to fix it?

No replies from the botify

Botify bot is great. I love it. At first it worked great. But suddenly botify stopped to reply to command given
Like $botify help doesn't show
Capture
But it plays the song and resume all the command are working, but we couldn't able to get the reply

Queue song as the next song

Hey,

This is a feature in Spotify, when a playlist is currently playing, you can add a song outside the playlist in the queue, and it is added as the next song, in a new "temporary" or a "sub" queue. Once this sub queue is over, it goes back to the playlist where it left. With this, the outside song is just played once and it is not part of the playlist.

If that sub queue might be too complex, maybe just add a song as the next song in queue, or at index after the current song. Just like the !insert command for local playlist
Ex:

  • !queue !next {song} => adds the song as the next song in the queue
  • !queue !insert 1 {song} => same as the previous command, adds the song one place after the current one
  • !queue !insert 2 {song} => adds the song two songs later after the current one

Anyway, just a feature suggestion 😺

Preset base command based on Doc Failing

Hello,

First of all, great job for this bot ! I just though about about a using Spotify bot myself tonight.
But you've done it, quite good :)
Keep it that way ;)

Well, it seems there is a little problem, with documentation or with preset command, but I'm trying to create a new one for my friend that will be need to help to play easily spotify playlist.

See the following error ;)
I'll maybe take a look myself, or PR if I found/fix something

image

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.