GithubHelp home page GithubHelp logo

drschlaubi / mikbot Goto Github PK

View Code? Open in Web Editor NEW
35.0 3.0 12.0 3.4 MB

A modular framework for building Discord bots in Kotlin using Kordex and Kord

Dockerfile 0.06% Kotlin 98.32% Shell 0.06% Java 1.54% PowerShell 0.03%

mikbot's Introduction

Mik Bot

GitHub Workflow Status Gradle Plugin Portal Latest Version Made with Kotlin

Open in Gitpod

A modular framework for building Discord bots in Kotlin using Kordex and Kord.

If you are here for mikmusic, click here and there.

If you are here for Votebot, click here.

Help translating this project

Übersetzungsstatus

Deployment

For a full explanation on how to deploy the bot yourself take a look at this

Requirements

Example Environment file

.env
ENVIRONMENT=PRODUCTION
SENTRY_TOKEN=<>
DISCORD_TOKEN=<>
MONGO_URL=mongodb://bot:bot@mongo
MONGO_DATABASE=bot_prod
LOG_LEVEL=DEBUG
BOT_OWNERS=416902379598774273
OWNER_GUILD=<>
UPDATE_PLUGINS=false #if you want to disable the auto updater

Starting the bot

Docker image from: https://github.com/DRSchlaubi/mikmusic/pkgs/container/mikmusic%2Fbot

  • Clone this repo
  • Run docker-compose up -d

Binary repositories

The bot has two repositories for binaries the binary-repo containing the bots binaries and the plugin-repo (index) normally you should not need to interact with these repositories directly.

For bot developers

JDK is required it can be obtained here (Recommended for Windows but works everywhere) and here (Recommended for Linux/Mac)

Please set the ENVIRONMENT env var to DEVELOPMENT whilst developing the bot. Also set a TEST_GUILD environment variable, for local commands

If you are making any changes to the bots official plugins (aka the plugins in this repo), please run the rebuild-plugin-dependency-list.sh script first, otherwise your plugins won't be loaded properly

For plugin developers

You can find a detailed guide on how to write plugins here

mikbot's People

Contributors

comradekingu avatar drschlaubi avatar emmaboecker avatar korsti avatar l4zs avatar lukellmann avatar niggelgame avatar nycodeghg avatar renovate-bot avatar renovate[bot] avatar warriorzz avatar weblate 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

Watchers

 avatar  avatar  avatar

mikbot's Issues

VoteBot

Hello... love vote bot. however, it is not allowing me to vote more than once even though I have said max-votes is 2.

VoteBot: Cannot close a poll after message deletion

It seems that you cannot close a poll in the event that its containing message was deleted. Is there a fix for this? If not, maybe a fix could be implemented wherein attempting to close a poll with a message ID that doesn't exist will simply remove the poll from the list, or something similar?

Votebot Issue Templates

We should add one of these fancy issue templates for votebot bug reports and feature requests.

excited with code 1

I'm having a bit of trouble getting this bot to run, I have docker and lavalink installed, I have created changed my .env and created the docker-compose.yml as well when I try to run the bot it just ends up exciting with code 1
would you be able to point and laughing at me before telling me what I'm doing wrong?

Microsoft Windows [Version 10.0.19044.1889]
(c) Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>cd C:\Music-Bot-2

C:\Music-Bot-2>docker-compose up -d
[+] Running 16/16

  • bot Pulled 23.4s
    • 675920708c8b Pull complete 7.7s
    • 8d642f39b108 Pull complete 8.3s
    • 9f4772666698 Pull complete 15.4s
    • b3ad047f9def Pull complete 15.6s
    • 4844e895491a Pull complete 15.7s
    • bc78e3c069ed Pull complete 21.9s
  • mongo Pulled 42.1s
    • 6f9c8c301e0f Pull complete 5.0s
    • 73738965c4ce Pull complete 6.7s
    • 7fd6635b9ddf Pull complete 8.7s
    • 73a471eaa4ad Pull complete 9.6s
    • bcf274af89b0 Pull complete 10.7s
    • 04fc489f2a3b Pull complete 11.6s
    • 6eff8a505292 Pull complete 36.6s
    • a5ef4431fce7 Pull complete 36.7s
      [+] Running 4/4
  • Network music-bot-2_default Created 0.6s
  • Volume "music-bot-2_mongo-data" Created 0.0s
  • Container music-bot-2-mongo-1 Started 7.6s
  • Container music-bot-2-bot-1 Started 2.0s

[+] Running 2/2docker-compose up

  • Container music-bot-2-mongo-1 Recreated 0.6s
  • Container music-bot-2-bot-1 Recreated 0.2s
    Attaching to music-bot-2-bot-1, music-bot-2-mongo-1
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.389+00:00"},"s":"I", "c":"NETWORK", "id":4915701, "ctx":"-","msg":"Initialized wire specification","attr":{"spec":{"incomingExternalClient":{"minWireVersion":0,"maxWireVersion":17},"incomingInternalClient":{"minWireVersion":0,"maxWireVersion":17},"outgoing":{"minWireVersion":6,"maxWireVersion":17},"isInternalClient":true}}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.389+00:00"},"s":"I", "c":"CONTROL", "id":23285, "ctx":"main","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.390+00:00"},"s":"I", "c":"NETWORK", "id":4648601, "ctx":"main","msg":"Implicit TCP FastOpen unavailable. If TCP FastOpen is required, set tcpFastOpenServer, tcpFastOpenClient, and tcpFastOpenQueueSize."}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.390+00:00"},"s":"I", "c":"REPL", "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"TenantMigrationDonorService","namespace":"config.tenantMigrationDonors"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.390+00:00"},"s":"I", "c":"REPL", "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"TenantMigrationRecipientService","namespace":"config.tenantMigrationRecipients"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.390+00:00"},"s":"I", "c":"REPL", "id":5123008, "ctx":"main","msg":"Successfully registered PrimaryOnlyService","attr":{"service":"ShardSplitDonorService","namespace":"config.tenantSplitDonors"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.390+00:00"},"s":"I", "c":"CONTROL", "id":5945603, "ctx":"main","msg":"Multi threading initialized"}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.391+00:00"},"s":"I", "c":"CONTROL", "id":4615611, "ctx":"initandlisten","msg":"MongoDB starting","attr":{"pid":1,"port":27017,"dbPath":"/data/db","architecture":"64-bit","host":"5a9af1a27d43"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.391+00:00"},"s":"I", "c":"CONTROL", "id":23403, "ctx":"initandlisten","msg":"Build Info","attr":{"buildInfo":{"version":"6.0.1","gitVersion":"32f0f9c88dc44a2c8073a5bd47cf779d4bfdee6b","openSSLVersion":"OpenSSL 1.1.1f 31 Mar 2020","modules":[],"allocator":"tcmalloc","environment":{"distmod":"ubuntu2004","distarch":"x86_64","target_arch":"x86_64"}}}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.391+00:00"},"s":"I", "c":"CONTROL", "id":51765, "ctx":"initandlisten","msg":"Operating System","attr":{"os":{"name":"Ubuntu","version":"20.04"}}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.391+00:00"},"s":"I", "c":"CONTROL", "id":21951, "ctx":"initandlisten","msg":"Options set by command line","attr":{"options":{"net":{"bindIp":"*"},"security":{"authorization":"enabled"}}}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.391+00:00"},"s":"I", "c":"STORAGE", "id":22270, "ctx":"initandlisten","msg":"Storage engine to use detected by data files","attr":{"dbpath":"/data/db","storageEngine":"wiredTiger"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.391+00:00"},"s":"I", "c":"STORAGE", "id":22297, "ctx":"initandlisten","msg":"Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem","tags":["startupWarnings"]}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.391+00:00"},"s":"I", "c":"STORAGE", "id":22315, "ctx":"initandlisten","msg":"Opening WiredTiger","attr":{"config":"create,cache_size=25163M,session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,remove=true,path=journal,compressor=snappy),builtin_extension_config=(zstd=(compression_level=6)),file_manager=(close_idle_time=600,close_scan_interval=10,close_handle_minimum=2000),statistics_log=(wait=0),json_output=(error,message),verbose=[recovery_progress:1,checkpoint_progress:1,compact_progress:1,backup:0,checkpoint:0,compact:0,evict:0,history_store:0,recovery:0,rts:0,salvage:0,tiered:0,timestamp:0,transaction:0,verify:0,log:0],"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.655+00:00"},"s":"I", "c":"STORAGE", "id":4795906, "ctx":"initandlisten","msg":"WiredTiger opened","attr":{"durationMillis":264}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.655+00:00"},"s":"I", "c":"RECOVERY", "id":23987, "ctx":"initandlisten","msg":"WiredTiger recoveryTimestamp","attr":{"recoveryTimestamp":{"$timestamp":{"t":0,"i":0}}}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.655+00:00"},"s":"I", "c":"WT", "id":4366408, "ctx":"initandlisten","msg":"No table logging settings modifications are required for existing WiredTiger tables","attr":{"loggingEnabled":true}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.674+00:00"},"s":"W", "c":"CONTROL", "id":22178, "ctx":"initandlisten","msg":"/sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'","tags":["startupWarnings"]}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.674+00:00"},"s":"W", "c":"CONTROL", "id":5123300, "ctx":"initandlisten","msg":"vm.max_map_count is too low","attr":{"currentValue":65530,"recommendedMinimum":1677720,"maxConns":838860},"tags":["startupWarnings"]}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.675+00:00"},"s":"I", "c":"NETWORK", "id":4915702, "ctx":"initandlisten","msg":"Updated wire specification","attr":{"oldSpec":{"incomingExternalClient":{"minWireVersion":0,"maxWireVersion":17},"incomingInternalClient":{"minWireVersion":0,"maxWireVersion":17},"outgoing":{"minWireVersion":6,"maxWireVersion":17},"isInternalClient":true},"newSpec":{"incomingExternalClient":{"minWireVersion":0,"maxWireVersion":17},"incomingInternalClient":{"minWireVersion":17,"maxWireVersion":17},"outgoing":{"minWireVersion":17,"maxWireVersion":17},"isInternalClient":true}}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.675+00:00"},"s":"I", "c":"REPL", "id":5853300, "ctx":"initandlisten","msg":"current featureCompatibilityVersion value","attr":{"featureCompatibilityVersion":"6.0","context":"startup"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.675+00:00"},"s":"I", "c":"STORAGE", "id":5071100, "ctx":"initandlisten","msg":"Clearing temp directory"}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.675+00:00"},"s":"I", "c":"CONTROL", "id":20536, "ctx":"initandlisten","msg":"Flow Control is enabled on this deployment"}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.675+00:00"},"s":"I", "c":"FTDC", "id":20625, "ctx":"initandlisten","msg":"Initializing full-time diagnostic data capture","attr":{"dataDirectory":"/data/db/diagnostic.data"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.677+00:00"},"s":"I", "c":"REPL", "id":6015317, "ctx":"initandlisten","msg":"Setting new configuration state","attr":{"newState":"ConfigReplicationDisabled","oldState":"ConfigPreStart"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.677+00:00"},"s":"I", "c":"STORAGE", "id":22262, "ctx":"initandlisten","msg":"Timestamp monitor starting"}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.678+00:00"},"s":"I", "c":"NETWORK", "id":23015, "ctx":"listener","msg":"Listening on","attr":{"address":"/tmp/mongodb-27017.sock"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.678+00:00"},"s":"I", "c":"NETWORK", "id":23015, "ctx":"listener","msg":"Listening on","attr":{"address":"0.0.0.0"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:11.678+00:00"},"s":"I", "c":"NETWORK", "id":23016, "ctx":"listener","msg":"Waiting for connections","attr":{"port":27017,"ssl":"off"}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:12.788+00:00"},"s":"I", "c":"NETWORK", "id":22943, "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.22.0.3:46678","uuid":"04e2901a-f80a-4f53-8c58-65732906073d","connectionId":1,"connectionCount":1}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:12.788+00:00"},"s":"I", "c":"NETWORK", "id":22943, "ctx":"listener","msg":"Connection accepted","attr":{"remote":"172.22.0.3:46676","uuid":"3338b9a5-eb82-49a3-9e0d-5f6a0545e29e","connectionId":2,"connectionCount":2}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:12.793+00:00"},"s":"I", "c":"NETWORK", "id":51800, "ctx":"conn2","msg":"client metadata","attr":{"remote":"172.22.0.3:46676","client":"conn2","doc":{"driver":{"name":"mongo-java-driver|reactive-streams","version":"4.7.1"},"os":{"type":"Linux","name":"Linux","architecture":"amd64","version":"5.10.16.3-microsoft-standard-WSL2"},"platform":"Java/IBM Corporation/18.0.2+9"}}}
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:12.793+00:00"},"s":"I", "c":"NETWORK", "id":51800, "ctx":"conn1","msg":"client metadata","attr":{"remote":"172.22.0.3:46678","client":"conn1","doc":{"driver":{"name":"mongo-java-driver|reactive-streams","version":"4.7.1"},"os":{"type":"Linux","name":"Linux","architecture":"amd64","version":"5.10.16.3-microsoft-standard-WSL2"},"platform":"Java/IBM Corporation/18.0.2+9"}}}
    music-bot-2-bot-1 | 2022-09-10 00:30:12.787 [main] INFO org.mongodb.driver.client - MongoClient with metadata {"driver": {"name": "mongo-java-driver|reactive-streams", "version": "4.7.1"}, "os": {"type": "Linux", "name": "Linux", "architecture": "amd64", "version": "5.10.16.3-microsoft-standard-WSL2"}, "platform": "Java/IBM Corporation/18.0.2+9"} created with settings MongoClientSettings{readPreference=primary, writeConcern=WriteConcern{w=null, wTimeout=null ms, journal=null}, retryWrites=true, retryReads=true, readConcern=ReadConcern{level=null}, credential=MongoCredential{mechanism=null, userName='bot', source='admin', password=, mechanismProperties=}, streamFactoryFactory=null, commandListeners=[], codecRegistry=ProvidersCodecRegistry{codecProviders=[ProvidersCodecRegistry{codecProviders=[ValueCodecProvider{}, BsonValueCodecProvider{}, DBRefCodecProvider{}, DBObjectCodecProvider{}, DocumentCodecProvider{}, IterableCodecProvider{}, MapCodecProvider{}, GeoJsonCodecProvider{}, GridFSFileCodecProvider{}, Jsr310CodecProvider{}, JsonObjectCodecProvider{}, BsonCodecProvider{}, EnumCodecProvider{}, com.mongodb.Jep395RecordCodecProvider@62b32d6c]}, org.litote.kmongo.service.CustomCodecProvider@c6960ffb, org.litote.kmongo.serialization.SerializationClassMappingTypeService$coreCodecRegistry$1@5a6a862c]}, clusterSettings={hosts=[mongo:27017], srvServiceName=mongodb, mode=SINGLE, requiredClusterType=UNKNOWN, requiredReplicaSetName='null', serverSelector='null', clusterListeners='[]', serverSelectionTimeout='30000 ms', localThreshold='30000 ms'}, socketSettings=SocketSettings{connectTimeoutMS=10000, readTimeoutMS=0, receiveBufferSize=0, sendBufferSize=0}, heartbeatSocketSettings=SocketSettings{connectTimeoutMS=10000, readTimeoutMS=10000, receiveBufferSize=0, sendBufferSize=0}, connectionPoolSettings=ConnectionPoolSettings{maxSize=100, minSize=0, maxWaitTimeMS=120000, maxConnectionLifeTimeMS=0, maxConnectionIdleTimeMS=0, maintenanceInitialDelayMS=0, maintenanceFrequencyMS=60000, connectionPoolListeners=[], maxConnecting=2}, serverSettings=ServerSettings{heartbeatFrequencyMS=10000, minHeartbeatFrequencyMS=500, serverListeners='[]', serverMonitorListeners='[]'}, sslSettings=SslSettings{enabled=false, invalidHostNameAllowed=false, context=null}, applicationName='null', compressorList=[], uuidRepresentation=UNSPECIFIED, serverApi=null, autoEncryptionSettings=null, contextProvider=null}
    music-bot-2-bot-1 | 2022-09-10 00:30:12.806 [cluster-ClusterId{value='631bda94ba7f74728e753c78', description='null'}-mongo:27017] INFO org.mongodb.driver.connection - Opened connection [connectionId{localValue:1, serverValue:2}] to mongo:27017
    music-bot-2-bot-1 | 2022-09-10 00:30:12.806 [cluster-rtt-ClusterId{value='631bda94ba7f74728e753c78', description='null'}-mongo:27017] INFO org.mongodb.driver.connection - Opened connection [connectionId{localValue:2, serverValue:1}] to mongo:27017
    music-bot-2-bot-1 | 2022-09-10 00:30:12.806 [cluster-ClusterId{value='631bda94ba7f74728e753c78', description='null'}-mongo:27017] INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=mongo:27017, type=STANDALONE, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=17, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=14144669}
    music-bot-2-bot-1 | 2022-09-10 00:30:12.822 [main] INFO o.pf4j.DefaultPluginStatusProvider - Enabled plugins: []
    music-bot-2-bot-1 | 2022-09-10 00:30:12.823 [main] INFO o.pf4j.DefaultPluginStatusProvider - Disabled plugins: []
    music-bot-2-bot-1 | 2022-09-10 00:30:12.825 [main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.7.0 in 'deployment' mode
    music-bot-2-bot-1 | 2022-09-10 00:30:12.856 [main] DEBUG org.pf4j.AbstractPluginManager - Lookup plugins in '[/usr/app/plugins]'
    music-bot-2-bot-1 | 2022-09-10 00:30:12.861 [main] INFO org.pf4j.AbstractPluginManager - No plugins
    music-bot-2-bot-1 | 2022-09-10 00:30:12.861 [main] DEBUG d.s.m.core.plugin.PluginUpdater - No updates found
    music-bot-2-bot-1 | 2022-09-10 00:30:12.861 [main] DEBUG o.p.update.DefaultUpdateRepository - Read plugins of 'c4ea153ee891e283' repository from 'https://storage.googleapis.com/mikbot-plugins/plugins.json'
    music-bot-2-bot-1 | 2022-09-10 00:30:13.678 [main] DEBUG o.p.update.DefaultUpdateRepository - Found 25 plugins in repository 'c4ea153ee891e283'
    music-bot-2-bot-1 | 2022-09-10 00:30:13.681 [main] DEBUG d.s.m.core.plugin.PluginLoader - Built translation provider graph: {}
    music-bot-2-bot-1 | 2022-09-10 00:30:13.703 [main] DEBUG org.pf4j.AbstractExtensionFinder - Finding extensions of extension point 'dev.schlaubi.musicbot.core.sentry.SentryExtensionPoint'
    music-bot-2-bot-1 | 2022-09-10 00:30:13.703 [main] DEBUG org.pf4j.LegacyExtensionFinder - Reading extensions storages from classpath
    music-bot-2-bot-1 | 2022-09-10 00:30:13.703 [main] DEBUG org.pf4j.LegacyExtensionFinder - Read 'file:/usr/app/lib/pf4j-update-2.3.0.jar!/META-INF/extensions.idx'
    music-bot-2-bot-1 | 2022-09-10 00:30:13.704 [main] DEBUG org.pf4j.AbstractExtensionFinder - No extensions found
    music-bot-2-bot-1 | 2022-09-10 00:30:13.704 [main] DEBUG org.pf4j.LegacyExtensionFinder - Reading extensions storages from plugins
    music-bot-2-bot-1 | 2022-09-10 00:30:13.704 [main] DEBUG d.s.m.c.p.DependencyCheckingExtensionFinder - Finding extensions of extension point 'dev.schlaubi.musicbot.core.sentry.SentryExtensionPoint' for plugin 'null'
    music-bot-2-bot-1 | 2022-09-10 00:30:13.705 [main] DEBUG org.pf4j.AbstractExtensionFinder - No extensions found for extension point 'dev.schlaubi.musicbot.core.sentry.SentryExtensionPoint'
    music-bot-2-bot-1 | Exception in thread "main" dev.kord.core.exception.KordInitializationException: Something went wrong while initializing Kord, make sure the bot token you entered is valid.{"message": "401: Unauthorized", "code": 0}
    music-bot-2-bot-1 |
    music-bot-2-bot-1 | at dev.kord.core.builder.kord.KordBuilder.getGatewayInfo(KordBuilder.kt:223)
    music-bot-2-bot-1 | at dev.kord.core.builder.kord.KordBuilder.access$getGatewayInfo(KordBuilder.kt:61)
    music-bot-2-bot-1 | at dev.kord.core.builder.kord.KordBuilder$getGatewayInfo$1.invokeSuspend(KordBuilder.kt)
    music-bot-2-bot-1 | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
    music-bot-2-bot-1 | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
    music-bot-2-bot-1 | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
    music-bot-2-bot-1 | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:14.318+00:00"},"s":"I", "c":"-", "id":20883, "ctx":"conn2","msg":"Interrupted operation as its client disconnected","attr":{"opId":28}}
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:14.319+00:00"},"s":"I", "c":"NETWORK", "id":22944, "ctx":"conn1","msg":"Connection ended","attr":{"remote":"172.22.0.3:46678","uuid":"04e2901a-f80a-4f53-8c58-65732906073d","connectionId":1,"connectionCount":1}}
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
    music-bot-2-mongo-1 | {"t":{"$date":"2022-09-10T00:30:14.319+00:00"},"s":"I", "c":"NETWORK", "id":22944, "ctx":"conn2","msg":"Connection ended","attr":{"remote":"172.22.0.3:46676","uuid":"3338b9a5-eb82-49a3-9e0d-5f6a0545e29e","connectionId":2,"connectionCount":0}}
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
    music-bot-2-bot-1 | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
    music-bot-2-bot-1 | at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
    music-bot-2-bot-1 | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    music-bot-2-bot-1 | at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:178)
    music-bot-2-bot-1 | at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166)
    music-bot-2-bot-1 | at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)
    music-bot-2-bot-1 | at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)music-bot-2-bot-1 | at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)
    music-bot-2-bot-1 | at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328)music-bot-2-bot-1 | at kotlinx.coroutines.ResumeAwaitOnCompletion.invoke(JobSupport.kt:1413)
    music-bot-2-bot-1 | at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1520)
    music-bot-2-bot-1 | at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
    music-bot-2-bot-1 | at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
    music-bot-2-bot-1 | at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath(JobSupport.kt:906)
    music-bot-2-bot-1 | at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:863)
    music-bot-2-bot-1 | at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:828)
    music-bot-2-bot-1 | at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:100)
    music-bot-2-bot-1 | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    music-bot-2-bot-1 | at kotlinx.coroutines.UndispatchedCoroutine.afterResume(CoroutineContext.kt:233)
    music-bot-2-bot-1 | at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
    music-bot-2-bot-1 | at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    music-bot-2-bot-1 | at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    music-bot-2-bot-1 | at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
    music-bot-2-bot-1 | at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
    music-bot-2-bot-1 | at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
    music-bot-2-bot-1 | at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
    music-bot-2-bot-1 | at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
    music-bot-2-bot-1 | at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
    music-bot-2-bot-1 exited with code 1

Game control issues

  • "general.yes" does not get translated
  • "game.resend_controls.blame" sometimes does not get translated
  • only UNO can handle exceptions when updating controls

Dependency Dashboard

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

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • Update dependency io.insert-koin:koin-core to v3.5.6
  • Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.6.3
  • Update coroutines to v1.8.0 (org.jetbrains.kotlinx:kotlinx-coroutines-test, org.jetbrains.kotlinx:kotlinx-coroutines-core, org.jetbrains.kotlinx:kotlinx-coroutines-jdk8)
  • Update dependency ch.qos.logback:logback-classic to v1.5.6
  • Update dependency gradle to v8.7
  • Update dependency org.ow2.asm:asm to v9.7
  • Update dependency org.pf4j:pf4j to v3.11.0
  • Update gradle/wrapper-validation-action action to v3
  • 🔐 Create all rate-limited PRs at once 🔐

Warning

Renovate failed to look up the following dependencies: Failed to look up maven package dev.kord.x:kordx.emoji.

Files affected: gradle/libs.versions.toml


Open

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

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

docker-compose
docker-compose.yml
music/player/docker-compose.yml
  • ghcr.io/nycodeghg/image-color-service 0.1.1
dockerfile
Dockerfile
  • eclipse-temurin 21-jre-alpine
github-actions
.github/workflows/ci.yaml
  • mikbot/mikbot-workflow v1.4.2
.github/workflows/gradle_plugin_ci.yml
  • actions/checkout v3
  • gradle/wrapper-validation-action v1
  • actions/checkout v3
  • actions/setup-java v3
gradle
buildSrc/src/main/kotlin/Git.kt
buildSrc/src/main/kotlin/Project.kt
gradle.properties
settings.gradle.kts
  • com.gradle.enterprise 3.12
build.gradle.kts
api/build.gradle.kts
api/annotations/build.gradle.kts
buildSrc/settings.gradle.kts
buildSrc/build.gradle.kts
  • dev.schlaubi:gradle-plugin 1.0.0
  • org.jlleitschuh.gradle:ktlint-gradle 11.4.0
  • com.github.gmazzo:gradle-buildconfig-plugin 3.1.0
  • gradle.plugin.com.google.cloud.artifactregistry:artifactregistry-gradle-plugin 2.2.1
buildSrc/src/main/kotlin/mikbot-module.gradle.kts
buildSrc/src/main/kotlin/mikbot-publishing.gradle.kts
buildSrc/src/main/kotlin/mikbot-template.gradle.kts
clients/haste-client/build.gradle.kts
clients/image-color-client/build.gradle.kts
clients/image-color-client-kord/build.gradle.kts
core/database-i18n/build.gradle.kts
core/game-animator/build.gradle.kts
core/gdpr/build.gradle.kts
core/health/build.gradle.kts
core/ktor/build.gradle.kts
core/redeploy-hook/build.gradle.kts
gradle/libs.versions.toml
  • dev.kord:kord-common 0.13.1
  • dev.kord:kord-rest 0.13.1
  • com.kotlindiscord.kord.extensions:kord-extensions 1.7.1-SNAPSHOT
  • com.kotlindiscord.kord.extensions:unsafe 1.7.1-SNAPSHOT
  • com.kotlindiscord.kord.extensions:annotation-processor 1.7.1-SNAPSHOT
  • dev.kord.x:kordx.emoji feature-mpp-SNAPSHOT
  • org.jetbrains.kotlinx:kotlinx-coroutines-jdk8 1.7.3
  • org.jetbrains.kotlinx:kotlinx-coroutines-core 1.7.3
  • org.jetbrains.kotlinx:kotlinx-coroutines-test 1.7.3
  • org.jetbrains.kotlinx:kotlinx-serialization-json 1.6.2
  • org.litote.kmongo:kmongo-coroutine-serialization 4.11.0
  • org.litote.kmongo:kmongo-id-serialization 4.11.0
  • dev.schlaubi:stdx-full 1.2.1
  • ch.qos.logback:logback-classic 1.4.14
  • com.google.apis:google-api-services-youtube v3-rev20221108-2.0.0
  • dev.schlaubi.lavakord:kord 6.1.3
  • dev.schlaubi.lavakord:sponsorblock 6.1.3
  • dev.schlaubi.lavakord:lavasrc-jvm 6.1.3
  • dev.schlaubi.lavakord:lavasearch-jvm 6.1.3
  • dev.schlaubi.lavakord:lyrics-jvm 6.1.3
  • com.google.devtools.ksp:symbol-processing-api 2.0.0-Beta2-1.0.16
  • io.ktor:ktor-client-okhttp 2.3.7
  • io.ktor:ktor-client-logging 2.3.7
  • io.ktor:ktor-serialization-kotlinx-json 2.3.7
  • io.ktor:ktor-client-content-negotiation 2.3.7
  • io.ktor:ktor-client-core 2.3.7
  • io.ktor:ktor-client-auth 2.3.7
  • io.ktor:ktor-client-resources 2.3.7
  • io.ktor:ktor-server-content-negotiation 2.3.7
  • io.ktor:ktor-server-netty 2.3.7
  • io.ktor:ktor-server-resources 2.3.7
  • io.ktor:ktor-server-status-pages 2.3.7
  • io.ktor:ktor-server-auth 2.3.7
  • io.ktor:ktor-server-sessions 2.3.7
  • io.ktor:ktor-server-core-jvm 2.3.7
  • io.ktor:ktor-server-cors 2.3.7
  • io.ktor:ktor-server-websockets 2.3.7
  • io.ktor:ktor-server-html-builder 2.3.7
  • org.pf4j:pf4j 3.10.0
  • org.pf4j:pf4j-update 2.3.0
  • com.google.code.gson:gson 2.10.1
  • io.insert-koin:koin-core 3.5.3
  • org.ow2.asm:asm 9.6
  • org.jetbrains.kotlin.plugin.serialization 2.0.0-Beta2
  • org.jetbrains.kotlin.jvm 2.0.0-Beta2
  • com.gradle.plugin-publish 1.2.1
  • com.github.gmazzo.buildconfig 5.3.3
  • dev.schlaubi.mikbot.gradle-plugin 1.0.0
  • com.google.devtools.ksp 2.0.0-Beta2-1.0.16
gradle-plugin/settings.gradle.kts
gradle-plugin/build.gradle.kts
music/build.gradle.kts
music/commands/build.gradle.kts
music/lyrics/build.gradle.kts
music/player/build.gradle.kts
plugin-processor/build.gradle.kts
runtime/build.gradle.kts
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.5

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

Cannot create vote in news channels

Sentry Issue: BOT-V2-Z

ClassCastException: dev.kord.core.entity.channel.NewsChannel incompatible with dev.kord.core.entity.channel.TextChannel
    at space.votebot.commands.vote.create.AbstractCreateLogicKt.createVote(AbstractCreateLogic.kt:148)
    at space.votebot.commands.vote.create.AbstractCreateLogicKt$createVote$3.invokeSuspend(AbstractCreateLogic.kt)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:191)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:147)
...
(83 additional frame(s) were not displayed)

Profile Bug Tracking Issue

  • GitHub Profile url links to API
  • Pronoun Slash Command Arguments use translation keys
  • Admin Commands for giving badges to users
  • Profiles should look good on mobile
  • "Pronouns" in profile not translated to german
  • profile picture missing in profile
  • Use read_connections scope to add other account links
  • Add profile data to gdpr
  • Add profile visibilty options

Hey

When i do /create-vote title: but then when i do yes │no it just dosent work, says not enough options

ClassCastException: java.lang.String incompatible with dev.kord.core.entity.Message

Sentry Issue: BOT-V2-T

ClassCastException: java.lang.String incompatible with dev.kord.core.entity.Message
    at space.votebot.command.PollArguments$pollMessage$2$1.invoke(PollArgument.kt)
    at com.kotlindiscord.kord.extensions.commands.application.slash.SlashCommand.autoComplete$autoComplete(SlashCommand.kt:162)
    at com.kotlindiscord.kord.extensions.commands.application.slash.SlashCommand.autoComplete$suspendImpl(SlashCommand.kt:165)
    at com.kotlindiscord.kord.extensions.commands.application.slash.SlashCommand.autoComplete(SlashCommand.kt)
    at com.kotlindiscord.kord.extensions.commands.application.DefaultApplicationCommandRegistry.handle$suspendImpl(DefaultApplicationCommandRegistry.kt:410)
...
(11 additional frame(s) were not displayed)

Bot owner bypasses

Hey.

First of all: really nice project. I love it!

However I got a suggestion which would make the bot more practical to use for me.
In my case it would be nice if the configured bot owner could manage guild settings regardless of his guild permissions and if he could use the bot controls even if he is not in a voice channel.

Queuing bug

Sometimes when I try to queue a song the bot simply starts playing it while skipping the current playing one. I can't really say for sure why that happens as it does not seem like there are any error messages logged in that case.

Bot channel

Have a dedicated bot channel like hydra but with buttons

Sponsorblock exception

2022-01-07T21:12:51.563397345Z Exception in thread "DefaultDispatcher-worker-12" java.lang.NullPointerException: Cannot invoke "java.lang.Object.hashCode()" because "<parameter1>" is null
2022-01-07T21:12:51.563699070Z at java.base/java.util.concurrent.ConcurrentHashMap.replaceNode(Unknown Source)
2022-01-07T21:12:51.563788930Z at java.base/java.util.concurrent.ConcurrentHashMap.remove(Unknown Source)
2022-01-07T21:12:51.563863192Z at dev.schlaubi.mikmusic.sponsorblock.SponsorBlockKt.deleteSponsorBlockCache(SponsorBlock.kt:53)
2022-01-07T21:12:51.564095364Z at dev.schlaubi.mikmusic.player.MusicPlayer.onTrackEnd(MusicPlayer.kt:232)
2022-01-07T21:12:51.564331975Z at dev.schlaubi.mikmusic.player.MusicPlayer.access$onTrackEnd(MusicPlayer.kt:34)
2022-01-07T21:12:51.564556161Z at dev.schlaubi.mikmusic.player.MusicPlayer$2.invoke(MusicPlayer.kt:59)
2022-01-07T21:12:51.564786440Z at dev.schlaubi.mikmusic.player.MusicPlayer$2.invoke(MusicPlayer.kt:59)
2022-01-07T21:12:51.564963307Z at dev.schlaubi.mikmusic.player.MusicPlayer$special$$inlined$on$default$2$1.invokeSuspend(EventSource.kt:43)
2022-01-07T21:12:51.565288025Z at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
2022-01-07T21:12:51.565613665Z at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
2022-01-07T21:12:51.565696052Z at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:39)
2022-01-07T21:12:51.565701803Z at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
2022-01-07T21:12:51.565704217Z at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
2022-01-07T21:12:51.565706553Z at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
2022-01-07T21:12:51.565708937Z at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
2022-01-07T21:12:51.565711081Z at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Vote Channel

Ability to set a channel where all created votes are gonna be.

Votes Stuck at a specific number.

Hi there, We at Humanode are utilizing the Votebot for polls in our community. Recently we did a vote for 48 hours and somehow the votes are stuck at 125. New people can't vote even though 5 hours are still left before the voting is closed. The error at my end shows this "The interaction failed."

How could we resolve this issue?
Uploading Screenshot 2023-06-23 at 6.35.00 AM.png…

Scheduler

More scheduler options

  • Repeat
  • Shuffle
  • Loop queue

Error during download of plugin votebot

We would like to run self-hosted mikbot (ghcr.io/drschlaubi/mikmusic/bot) with votebot plugin. Tried to deploy it based on https://github.com/StckOverflw/mikbot/blob/main/votebot/README.md with

- name: DOWNLOAD_PLUGINS
   value: votebot
- name: PIE_CHART_SERVICE_URL
   value: https://pie-chart-service.nc-01.votebot.space/

But we get the following error:

2023-06-26 14:24:11.744 [main] DEBUG o.p.update.DefaultUpdateRepository - Read plugins of 'c8757b615cfdffca' repository from 'https://storage.googleapis.com/mikbot-plugins/plugins.json'
2023-06-26 14:24:37.243 [main] DEBUG o.p.update.DefaultUpdateRepository - Found 25 plugins in repository 'c8757b615cfdffca'
2023-06-26 14:24:37.344 [main] INFO  d.s.m.core.plugin.PluginUpdater - Attempting to download the following plugins: [PluginSpec(id=votebot, version=null)]
Exception in thread "main" org.pf4j.PluginRuntimeException: Error during download of plugin votebot
        at org.pf4j.update.UpdateManager.downloadPlugin(UpdateManager.java:273)
        at org.pf4j.update.UpdateManager.installPlugin(UpdateManager.java:241)
        at dev.schlaubi.musicbot.core.plugin.PluginUpdater.downloadRequestedPlugins(PluginUpdater.kt:120)
        at dev.schlaubi.musicbot.core.plugin.PluginUpdater.checkForUpdates$mikmusic(PluginUpdater.kt:30)
        at dev.schlaubi.musicbot.core.plugin.PluginLoader.loadPlugins(PluginLoader.kt:58)
        at dev.schlaubi.musicbot.LauncherKt.loadPlugins(Launcher.kt:29)
        at dev.schlaubi.musicbot.LauncherKt.main(Launcher.kt:15)
        at dev.schlaubi.musicbot.LauncherKt$main$2.invoke(Launcher.kt)
        at dev.schlaubi.musicbot.LauncherKt$main$2.invoke(Launcher.kt)
        at kotlin.coroutines.intrinsics.IntrinsicsKt__IntrinsicsJvmKt$createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$IntrinsicsKt__IntrinsicsJvmKt$1.invokeSuspend(IntrinsicsJvm.kt:205)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115)
        at kotlin.coroutines.jvm.internal.RunSuspendKt.runSuspend(RunSuspend.kt:19)
        at dev.schlaubi.musicbot.LauncherKt.main(Launcher.kt)
Caused by: io.ktor.client.plugins.HttpRequestTimeoutException: Request timeout has expired [url=https://storage.googleapis.com/mikbot-plugins/votebot/3.24.0/plugin-votebot-3.24.0.zip, request_timeout=unknown ms]
        at io.ktor.client.engine.cio.EndpointKt$setupTimeout$timeoutJob$1.invokeSuspend(Endpoint.kt:252)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

Would like to note that game-animator plugin works in the happy path.

CC: @MOZGIII

Voice channel leave behaviour

Currently the bot leaves immediately if there is no song remaining in the queue. In my opinion it would be nice if one could configure a timeout which has to exceed before he does so.

He also does not stop playing music if no user is left in the voice channel which wastes some server resources. This would also be a nice thing to implement.

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.