LorittaBot / Loritta

💁 A multipurpose, multilanguage, customizable, modular, and very cute bot for Discord! ~Making your server more awesome~
https://loritta.website/
GNU Affero General Public License v3.0
650 stars 171 forks source link

Issues when adding Loritta to a server that has a big name #2295

Closed MrPowerGamerBR closed 3 years ago

MrPowerGamerBR commented 3 years ago

Loritta tries to send a DM to the user, causing issues because the text is too big

I will probably rewrite the message itself, avoiding it to be too big.

java.lang.IllegalArgumentException: Provided text for message must be less than 2000 characters in length
    at net.dv8tion.jda.internal.utils.Checks.check(Checks.java:43)
    at net.dv8tion.jda.api.entities.MessageChannel.sendMessage(MessageChannel.java:343)
    at net.dv8tion.jda.internal.entities.PrivateChannelImpl.sendMessage(PrivateChannelImpl.java:141)
    at net.perfectdreams.loritta.website.routes.RequiresDiscordLoginLocalizedRoute$onLocalizedRequest$8.accept(RequiresDiscordLoginLocalizedRoute.kt:225)
    at net.perfectdreams.loritta.website.routes.RequiresDiscordLoginLocalizedRoute$onLocalizedRequest$8.accept(RequiresDiscordLoginLocalizedRoute.kt:35)
    at net.dv8tion.jda.internal.requests.DeferredRestAction.queue(DeferredRestAction.java:138)
    at net.dv8tion.jda.api.requests.RestAction.queue(RestAction.java:563)
    at net.perfectdreams.loritta.website.routes.RequiresDiscordLoginLocalizedRoute.onLocalizedRequest$suspendImpl(RequiresDiscordLoginLocalizedRoute.kt:224)
    at net.perfectdreams.loritta.website.routes.RequiresDiscordLoginLocalizedRoute$onLocalizedRequest$1.invokeSuspend(RequiresDiscordLoginLocalizedRoute.kt)
    at (Coroutine boundary.()
    at io.ktor.routing.Routing.executeResult(Routing.kt:147)
    at io.ktor.routing.Routing.interceptor(Routing.kt:34)
    at io.ktor.routing.Routing$Feature$install$1.invokeSuspend(Routing.kt:99)
    at io.ktor.features.StatusPages$interceptCall$2.invokeSuspend(StatusPages.kt:101)
    at io.ktor.features.StatusPages.interceptCall(StatusPages.kt:100)
    at io.ktor.features.StatusPages$Feature$install$2.invokeSuspend(StatusPages.kt:140)
    at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$2.invokeSuspend(DefaultEnginePipeline.kt:121)
Caused by: java.lang.IllegalArgumentException: Provided text for message must be less than 2000 characters in length
    at net.dv8tion.jda.internal.utils.Checks.check(Checks.java:43)
    at net.dv8tion.jda.api.entities.MessageChannel.sendMessage(MessageChannel.java:343)
    at net.dv8tion.jda.internal.entities.PrivateChannelImpl.sendMessage(PrivateChannelImpl.java:141)
    at net.perfectdreams.loritta.website.routes.RequiresDiscordLoginLocalizedRoute$onLocalizedRequest$8.accept(RequiresDiscordLoginLocalizedRoute.kt:225)
    at net.perfectdreams.loritta.website.routes.RequiresDiscordLoginLocalizedRoute$onLocalizedRequest$8.accept(RequiresDiscordLoginLocalizedRoute.kt:35)
    at net.dv8tion.jda.internal.requests.DeferredRestAction.queue(DeferredRestAction.java:138)
    at net.dv8tion.jda.api.requests.RestAction.queue(RestAction.java:563)
    at net.perfectdreams.loritta.website.routes.RequiresDiscordLoginLocalizedRoute.onLocalizedRequest$suspendImpl(RequiresDiscordLoginLocalizedRoute.kt:224)
    at net.perfectdreams.loritta.website.routes.RequiresDiscordLoginLocalizedRoute$onLocalizedRequest$1.invokeSuspend(RequiresDiscordLoginLocalizedRoute.kt)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.base/java.lang.Thread.run(Thread.java:832)
MrPowerGamerBR commented 3 years ago

The raw string has a length of 1850 chars, then there is the guild name (which can be up to 100 chars), so 1950 chars on total... then we also have the user mention (which is 21 chars) and that gets it up to 1971... then we also have Loritta's website URL and other stuff that can also cause it to go above 2000 chars.

MrPowerGamerBR commented 3 years ago

Already fixed in https://github.com/LorittaBot/Loritta/commit/578ccc8b0607af7d9a1b39d6f7df363b246864f3