DPP icon indicating copy to clipboard operation
DPP copied to clipboard

Coroutines Hiding Errors Within on_ready Event

Open Ashthetik opened this issue 1 year ago • 5 comments

Git Commit Reference

ced36fd7652ed24ec3784cbc150722a1e5f6456a

Describe the bug:

When utilising coroutines within the on_ready function, it's possible for D++ to ignore HTTP error codes and skip on printing any errors. This specifically happens when a user creates a malformed Slash Command (see below) and proceeds to send it to Discord.

To Reproduce:

Utilising the basic layout of the example bot provided in the Using Slash Commands and Interactions wiki:

  1. Convert the on_ready to a coroutine utilisng -> dpp::task<void>.
  2. Malform the command data either by leaving a field empty, or overpopulating (>100 characters) -- see Additional Context.
  3. Resume building the bot as usual.
  4. Observe as it fails to output the error.

Expected Behaviour:

As expected with a synchronous command creation, it would also be expected that any error codes would also mirror through with a coroutine setup.

Screenshots:

DPP_Bug_Report_Ev1

System Details:

  • OS: Linux fedora 6.10.3-200.fc40.x86_64
  • Version: 40

Additional Context:

Example Minimal Code:

#include <dpp/dpp.h>

int main() {
    dpp::cluster bot("...");

    bot.on_ready([&bot, logs](const dpp::ready_t &) -> dpp::task<void> {
        if (dpp::run_once<struct bulk_register>()) {
            const dpp::slashcommand bancmd(
                "", // Empty Field
                // Overpopulated Field
               "...............................................................................................................................................................................................................................................   ", 
                bot.me.id
            );

            co_await bot.co_global_command_create(bancmd);
        }

        co_return;
    });

    bot.start(dpp::st_wait);

    return 0;
}   

Ashthetik avatar Aug 12 '24 12:08 Ashthetik

Not a bug - you need to print the error yourself with coroutines The non-coroutine version passes a default callback that prints errors, this wouldn't be feasible with coroutines

With that said we could document this better

Mishura4 avatar Aug 12 '24 12:08 Mishura4

Noted. Treating it respectively with confirmation_callback_t and is_error() mimics it enough.

Never knew coroutines would break the logic flow I had. The more you know :+1:

Ashthetik avatar Aug 12 '24 13:08 Ashthetik

Is it all good to close this, or should I keep it open for tracking purposes for a docs update? I'd love to PR it, but I suck at formal documentation, lol

Ashthetik avatar Aug 24 '24 05:08 Ashthetik

Is it all good to close this, or should I keep it open for tracking purposes for a docs update? I'd love to PR it, but I suck at formal documentation, lol

Feel free to PR it! We can always say if something needs to be described more. Besides, some pages in our docs aren't too formal anyways (look at this page for example).

Jaskowicz1 avatar Aug 25 '24 16:08 Jaskowicz1

Updated the labels to reflect @Mishura4 's comment as this isn't a bug but rather a lack of documentation.

Jaskowicz1 avatar Aug 25 '24 16:08 Jaskowicz1

Any news on this?

Jaskowicz1 avatar Oct 16 '24 13:10 Jaskowicz1

is there actually anything to do here? not sure anything needs to be added?

braindigitalis avatar Oct 16 '24 13:10 braindigitalis

Documentation

Mishura4 avatar Oct 16 '24 14:10 Mishura4

Yeah I was supposed to make a PR for the docs on this but forgot

Ashthetik avatar Oct 17 '24 05:10 Ashthetik

All good to close this now with the doc update being merged? Or are we keeping it up for visibility?

Ashthetik avatar Oct 18 '24 00:10 Ashthetik

Closed as of #1288

Jaskowicz1 avatar Oct 19 '24 08:10 Jaskowicz1