-
Notifications
You must be signed in to change notification settings - Fork 2
getting_started
See also: Discord Social Getting Started
The first step is to create a Discord application.
See the Discord Social SDK docs at: Step 1: Create a Discord application
Download the latest release from the Releases page.
Import the .yymps package into your project and import the DiscordSocial folder. Make sure to also import the ExtensionCore folder; this extension is required by the Discord Social extension.
Next, set the application ID in the extension options to that of the application created above:

Before using the extension you need to initialise it:
discord_social_init();Every frame, for example in the Step Event, call the discord_social_run_callbacks function:
discord_social_run_callbacks();When you are done using the Discord extension, free it by calling the discord_social_shutdown function:
discord_social_shutdown();The Client module is the entry point of the Discord Social extension. Functionality related to calls can be found under the Call module. The General module contains documentation on all structs and constants of the extension as well as on the functions specific to the extension.
Note
All call functions take either the channel_id or the lobby_id.
The extension functions return structs that represent the corresponding Discord Social SDK class. For example, the function discord_social_client_get_call returns a GML struct of type DiscordCall, which correspond to the SDK's discordpp::Client::GetCall method of the discordpp::Client class and the discordpp::Call class respectively.
While the Discord classes have methods to get and set the current value of properties, the structs returned by the extension functions don't have methods to get or set the value of the properties, they are pure data structs that contain all properties with their values at the time the struct is created. Depending on how you have set things up in your game it may be necessary to add logic to account for changes to struct members, as the values they hold can become outdated. For example, a message might be edited at a later time, which would be reflected in calls to the methods of discordpp::MessageHandle objects. In GML, however, you will need to get a new DiscordMessageHandle struct that has updated values of all properties.
// Send a message and get the handle
message_handle = {};
discord_social_client_send_lobby_message(some_lobby_id, "Hello!", function(_result, _message_id) {
message_handle = discord_social_client_get_message_handle(_message_id);
});
//
discord_social_client_set_message_updated_callback(function(_message_id) {
message_handle = discord_social_client_get_message_handle(_message_id);
});YoYoGames 2026
- DiscordActivityInvite
- DiscordAudioDevice
- DiscordGuildMinimal
- DiscordLinkedLobby
- DiscordClientResult
- DiscordUserHandle
- DiscordUserApplicationProfileHandle
- DiscordChannelHandle
- DiscordAdditionalContent
- DiscordLinkedChannel
- DiscordCallInfoHandle
- DiscordVoiceStateHandle
- DiscordActivityParty
- DiscordActivitySecrets
- DiscordActivityAssets
- DiscordActivityTimestamps
- DiscordActivityButton
- DiscordGuildChannel
- DiscordRelationshipHandle
- DiscordRelationshipSnapshot
- DiscordLobbyMemberHandle
- DiscordCall
- DiscordCallVoiceStateEntry
- DiscordActivity
- DiscordLobbyHandle
- DiscordMessageHandle
- DiscordUserMessageSummary
- DiscordVADThresholdSettings
- DiscordClientCreateOptions
- DiscordAuthorizationArgs
- DiscordCallError
- DiscordCallStatus
- DiscordAvatarType
- DiscordAdditionalContentType
- DiscordErrorType
- DiscordChannelType
- DiscordActivityGamePlatforms
- DiscordAuthenticationExternalAuthType
- DiscordStatusType
- DiscordStatusDisplayTypes
- DiscordActivityTypes
- DiscordRelationshipType
- DiscordRelationshipGroupType
- DiscordDisclosureTypes
- DiscordActivityPartyPrivacy
- DiscordClientThread
- DiscordClientStatus
- ActivityActionTypes
- DiscordLoggingSeverity
- DiscordClientError
- DiscordAuthorizationTokenType
- DiscordAudioModeType
- DiscordAudioSystem