discord / discord-api-docs

Official Discord API Documentation
https://discord.com/developers/docs/intro
Other
5.91k stars 1.25k forks source link

Game SDK ClearActivity fails with error code 5 (InvalidPayload) #6612

Open x157 opened 8 months ago

x157 commented 8 months ago

Description

As of SDK 3.2.1, after setting an Activity, later trying to ClearActivity results in the following internal Discord error:

ResponseError { code: InvalidPayload, message: "child \"activity\" fails because [child \"supported_platforms\" fails because [\"supported_platforms\" must contain at least 1 items]]" }

This error was previously reported in Feb 2021 in the now-retired gamesdk-and-dispatch repository.

Steps to Reproduce

Update some activity:

discord::Activity Activity {};
// Set up Activity settings here (omitted for brevity, this part is not the problem)
DiscordCore().ActivityManager().UpdateActivity(Activity, [] (discord::Result Result) {});

Then try to ClearActivity:

DiscordCore().ActivityManager().ClearActivity([] (discord::Result Result) {});

Expected Behavior

I expect that ClearActivity() will actually clear the activity without generating an error.

Current Behavior

Screenshots/Videos

No response

Client and System Information

Win64 UE 5.3 DiscordGameSample project with Discord GameSDK 3.2.1

x157 commented 8 months ago

For now I #ifdefd out the ClearActivity code since it doesn't do anything other than generate an error.

You can see the exact code to repro here:

https://github.com/XistGG/DiscordGameSample/blob/main/Source/DiscordGameSample/CustomDiscordGameSubsystem.cpp

ProbablePrime commented 4 months ago

This issue is periodically mentioned in the Discord developer discord and each time no one gets any assistance with it. If you search the Discord for "ClearActivity" you'll see tons of results.

For now I'm getting around this by sending up a blanked out activity when I want to clear it, but it would be really good if this issue could get some attention. Even a short sentence explaining the situation would help.

ProbablePrime commented 4 months ago

https://github.com/discord/discord-api-docs/issues/4938#issuecomment-1161686135 provided an indication that there is a new version of the GameSDK that has "ActivitySupportedPlatformFlags", its likely this will work there.

I'lll, play around I guess.

Why was this new version not documented?

advaith1 commented 4 months ago

Pretty sure that comment is referring to version 3.2.1, which seems to be the one people are having this issue on.

ProbablePrime commented 4 months ago

You're right, thank you!

I had multiple editor windows open and was confused.

ProbablePrime commented 4 months ago

I played around in: https://github.com/ProbablePrime/DiscordRichPresenceClear. This now is a Console App for .NET 8 that shows the issue and therefore constitutes a minimum reproduction case.

I thought setting activity.SupportedPlatforms = (uint)ActivitySupportedPlatformFlags.Desktop;, might help as that's the item from the error message. But alas no, it will still fail.

ProbablePrime commented 3 weeks ago

I noticed that there was a new SDK for embeded(browser) targets, this SDK supports Discord Activities(The games that you can play in discord).

From there I went to the source code of the Embeded SDK, where i found the Set Activity Command

The Set activity command lead me to the RPC documentation.

Where I also don't see a "clear activity" RPC call.

There's also some new functionality in the RPC Calls that is not exposed in the Game SDK.

So with even the new SDK not having a clear activity call, the plot thickens I guess.