CorruptComputer / Officer-Beepsky

A simple Discord music bot
MIT License
2 stars 2 forks source link

Crash when sending a message to a channel where the bot has no access #3

Closed CorruptComputer closed 5 years ago

CorruptComputer commented 5 years ago
[events-197] ERROR reactor.core.scheduler.Schedulers - Scheduler worker in group main failed with an uncaught exception
reactor.core.Exceptions$ErrorCallbackNotImplemented: ClientException{request=ClientRequest{method=POST, url='/channels/129145765049139200/messages', headers=DefaultHttpHeaders[content-type: application/json]}, status=403 Forbidden, headers=DefaultHttpHeaders[Date: Tue, 16 Apr 2019 23:35:18 GMT, Content-Type: application/json, Content-Length: 44, Connection:keep-alive, Set-Cookie: __cfduid=d09f1d8b4030693a73a3f65e47dac8fd51555457718; expires=Wed, 15-Apr-20 23:35:18 GMT; path=/; domain=.discordapp.com; HttpOnly, Strict-Transport-Security: max-age=31536000; includeSubDomains, X-RateLimit-Limit:5, X-RateLimit-Remaining: 4, X-RateLimit-Reset: 1555457724, Via: 1.1 google, Alt-Svc: clear, Expect-CT: max-age=604800,report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct", Server: cloudflare, CF-RAY: 4c89f9935cbb9b81-DFW], errorResponse=ErrorResponse{fields={code=50001, message=Missing Access}}}                          

Caused by: ClientException{request=ClientRequest{method=POST, url='/channels/129145765049139200/messages', headers=DefaultHttpHeaders[content-type: application/json]}, status=403 Forbidden, headers=DefaultHttpHeaders[Date: Tue, 16 Apr 201923:35:18 GMT, Content-Type: application/json, Content-Length: 44, Connection: keep-alive, Set-Cookie: __cfduid=d09f1d8b4030693a73a3f65e47dac8fd51555457718; expires=Wed, 15-Apr-20 23:35:18 GMT; path=/; domain=.discordapp.com; HttpOnly, Strict-Transport-Security: max-age=31536000; includeSubDomains, X-RateLimit-Limit: 5, X-RateLimit-Remaining: 4, X-RateLimit-Reset: 1555457724, Via: 1.1 google, Alt-Svc: clear, Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct", Server: cloudflare, CF-RAY: 4c89f9935cbb9b81-DFW], errorResponse=ErrorResponse{fields={code=50001, message=Missing Access}}}                                                        at discord4j.rest.http.client.DiscordWebClient.clientException(DiscordWebClient.java:144)
        at discord4j.rest.http.client.DiscordWebClient.lambda$null$7(DiscordWebClient.java:122)                                                                                                                                                       at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118)
        at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)                                                                                                                                                 at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)
        at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:241)                                                                                                                                                               at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
        at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121)                                                                                                                                              at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
        at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:113)                                                                                                                                                             at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
        at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:287)                                                                                                                                   at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
        at reactor.core.publisher.FluxUsing$UsingFuseableSubscriber.onNext(FluxUsing.java:350)                                                                                                                                                        at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
        at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onNext(FluxFilterFuseable.java:113)
        at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
        at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onNext(FluxPeekFuseable.java:486)
        at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
        at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1505)
        at reactor.core.publisher.MonoReduceSeed$ReduceSeedSubscriber.onComplete(MonoReduceSeed.java:156)
        at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:363)
        at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:136)
        at reactor.netty.channel.FluxReceive.terminateReceiver(FluxReceive.java:372)
        at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:196)
        at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:337)
        at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:333)
        at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:382)
        at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:522)
        at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:141)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
        at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
        at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438)
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297)
        at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
        at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1476)
        at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1225)
        at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1272)
        at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502)
        at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441)
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:677)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:612)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:529)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:491)
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
        at java.lang.Thread.run(Thread.java:748)
        Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Assembly trace from producer [reactor.core.publisher.MonoFlatMap] :
        reactor.core.publisher.Mono.flatMap(Mono.java:2490)
        discord4j.rest.http.client.DiscordWebClient.lambda$null$10(DiscordWebClient.java:122)
Error has been observed by the following operator(s):
        |_      Mono.flatMap ⇢ discord4j.rest.http.client.DiscordWebClient.lambda$null$10(DiscordWebClient.java:122)
        |_      Mono.switchIfEmpty ⇢ discord4j.rest.http.client.DiscordWebClient.lambda$null$10(DiscordWebClient.java:123)
        |_      Mono.doFinally ⇢ reactor.netty.http.client.HttpClientFinalizer.lambda$responseSingle$7(HttpClientFinalizer.java:97)
        |_      Mono.flatMap ⇢ reactor.netty.http.client.HttpClientFinalizer.responseSingle(HttpClientFinalizer.java:95)
        |_      Mono.flatMap ⇢ discord4j.rest.http.client.DiscordWebClient.exchange(DiscordWebClient.java:111)
        |_      Mono.flatMap ⇢ discord4j.rest.request.RequestStream$Reader.accept(RequestStream.java:208)
        |_      Flux.concatMap ⇢ reactor.retry.DefaultRetry.apply(DefaultRetry.java:115)
        |_      Mono.retryWhen ⇢ discord4j.rest.request.RequestStream$Reader.accept(RequestStream.java:209)
        |_      Flux.concatMap ⇢ reactor.retry.DefaultRetry.apply(DefaultRetry.java:115)
        |_      Mono.retryWhen ⇢ discord4j.rest.request.RequestStream$Reader.accept(RequestStream.java:210)
        |_      Mono.log ⇢ discord4j.rest.request.RequestStream$Reader.accept(RequestStream.java:211)
        |_      Mono.doFinally ⇢ discord4j.rest.request.RequestStream$Reader.accept(RequestStream.java:212)
        |_      Mono.flatMap ⇢ discord4j.rest.request.DefaultRouter.exchange(DefaultRouter.java:80)
        |_      Mono.publishOn ⇢ discord4j.rest.request.DefaultRouter.exchange(DefaultRouter.java:89)
        |_      Mono.map ⇢ discord4j.core.object.entity.BaseMessageChannel.createMessage(BaseMessageChannel.java:74)
        |_      Mono.map ⇢ discord4j.core.object.entity.BaseMessageChannel.createMessage(BaseMessageChannel.java:75)

        Suppressed: java.lang.Exception: #block terminated with an error
                at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:93)
                at reactor.core.publisher.Mono.block(Mono.java:1494)
                at xyz.gupton.nickolas.beepsky.BotUtils.sendMessage(BotUtils.java:51)
                at xyz.gupton.nickolas.beepsky.BotUtils.sendMessage(BotUtils.java:33)
                at xyz.gupton.nickolas.beepsky.owner.commands.AnnouncementCommand.execute(AnnouncementCommand.java:44)
                at xyz.gupton.nickolas.beepsky.CommandHandler.onMessageReceived(CommandHandler.java:34)
                at reactor.core.publisher.LambdaSubscriber.onNext(LambdaSubscriber.java:130)
                at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
                at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:204)
                at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
                at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121)
                at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
                at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.tryOnNext(FluxFilterFuseable.java:143)
                at reactor.core.publisher.FluxOnAssembly$OnAssemblyConditionalSubscriber.tryOnNext(FluxOnAssembly.java:472)
                at reactor.core.publisher.FluxPublishOn$PublishOnConditionalSubscriber.runAsync(FluxPublishOn.java:866)
                at reactor.core.publisher.FluxPublishOn$PublishOnConditionalSubscriber.run(FluxPublishOn.java:939)
                at reactor.scheduler.forkjoin.ForkJoinPoolScheduler$DisposableWorkerTask.run(ForkJoinPoolScheduler.java:443)
                at reactor.scheduler.forkjoin.ForkJoinPoolScheduler$Worker.processTaskQueue(ForkJoinPoolScheduler.java:407)
                at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
                at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
                at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
                at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
                at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
CorruptComputer commented 5 years ago

This can be triggered by the announcement command if the bot does not have access to the default channel for the Guild.