JDA icon indicating copy to clipboard operation
JDA copied to clipboard

Error while Intercepting failed requests

Open Bingonymous opened this issue 1 year ago • 5 comments

General Troubleshooting

  • [X] I have checked for similar issues on the Issue-tracker.
  • [X] I have checked for PRs that might already address this issue.

Version of JDA

v5.1.0

Expected Behaviour

I try to log all requests from JDA to discord because I get sometimes a globalban (from cloudflare). They say that they count "401", "403" and "429" errors against me, so I wrote the following code... (see code example)

Code Example for Reproduction Steps

Interceptor interceptor = new Interceptor() {
    @NotNull
    @Override
    public Response intercept(@NotNull Chain chain) throws IOException {
	Response response = chain.proceed(chain.request());

	int statusCode = response.code();
	if (statusCode == 401 || statusCode == 403 || statusCode == 429) {
            System.out.println("HTTP Status Code: " + statusCode);
            System.out.println("URL: " + response.request().url());
        }

        return response;
    }
};


final JDA core = core = JDABuilder
    .create(getToken(), getEnableIntents())
    .setHttpClientBuilder(IOUtil.newHttpClientBuilder().addInterceptor(interceptor))
    .build();

Code for JDABuilder or DefaultShardManagerBuilder used

final JDA core = core = JDABuilder
    .create(getToken(), getEnableIntents())
    .setHttpClientBuilder(IOUtil.newHttpClientBuilder().addInterceptor(interceptor))
    .build();

Exception or Error

java.lang.IllegalStateException: An error occurred while parsing the response for a RestAction
        at net.dv8tion.jda.api.requests.Response.<init>(Response.java:81)
        at net.dv8tion.jda.api.requests.Response.<init>(Response.java:92)
        at net.dv8tion.jda.internal.requests.Requester$WorkTask.handleResponse(Requester.java:442)
        at net.dv8tion.jda.internal.requests.Requester$WorkTask.access$300(Requester.java:378)
        at net.dv8tion.jda.internal.requests.Requester.execute(Requester.java:245)
        at net.dv8tion.jda.internal.requests.Requester.execute(Requester.java:157)
        at net.dv8tion.jda.internal.requests.Requester.execute(Requester.java:140)
        at net.dv8tion.jda.internal.requests.Requester$WorkTask.execute(Requester.java:406)
        at net.dv8tion.jda.api.requests.SequentialRestRateLimiter$Bucket.execute(SequentialRestRateLimiter.java:477)
        at net.dv8tion.jda.api.requests.SequentialRestRateLimiter$Bucket.run(SequentialRestRateLimiter.java:517)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: java.io.IOException: closed
        at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:157)
        at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:291)
        at java.base/java.io.BufferedInputStream.implRead(BufferedInputStream.java:325)
        at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:312)
        at java.base/java.util.zip.CheckedInputStream.read(CheckedInputStream.java:59)
        at java.base/java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:277)
        at java.base/java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:269)
        at java.base/java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:175)
        at java.base/java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:79)
        at java.base/java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91)
        at net.dv8tion.jda.internal.utils.IOUtil.getBody(IOUtil.java:279)
        at net.dv8tion.jda.api.requests.Response.<init>(Response.java:77)
        ... 12 common frames omitted

Bingonymous avatar Sep 17 '24 17:09 Bingonymous