Skip to main content

Discord Game SDK for Python

A Python wrapper around Discord's Game SDK.

NOTE: This is entirely experimental, and may not work as intended. Please report all bugs to the GitHub issue tracker.

Credit to NathaanTFM for creating the original library.

Installation

  • Install the module:
    • With PIP:
      • Stable: python -m pip install discordsdk
      • Latest: python -m pip install git+https://github.com/LennyPhoenix/py-discord-sdk.git
    • With setup.py (latest):
      • git clone https://github.com/LennyPhoenix/py-discord-sdk.git
      • cd py-discord-sdk
      • python -m setup install
  • Download Discord Game SDK (2.5.6).
  • Grab the DLL from discord_game_sdk.zip in the lib directory and put it in your project's lib directory.

Documentation

If you need documentation, look at the official Game SDK docs; this was made following the official documentation. We also have some work-in-progress wiki docs.

Features

  • Should be working:

    • ActivityManager
    • ImageManager
    • NetworkManager
    • RelationshipManager
    • StorageManager
    • UserManager
  • Should be working, but need more testing:

    • AchievementManager (not tested at all)
    • ApplicationManager (especially the functions GetTicket and ValidateOrExit)
    • LobbyManager
    • OverlayManager
    • StoreManager (not tested at all)
    • VoiceManager

Contributing

The code needs more comments, type hinting. You can also implement the missing features, or add more tests. Feel free to open a pull request!

You can also report issues. Just open an issue and I will look into it!

Todo List

  • Better organisation of submodules.
  • CI/CD.
  • Update sdk.py to use type annotations.
  • Update to Discord SDK 3.2.0.

Examples

You can find more examples in the examples/ directory.

Create a Discord instance

import time

import discordsdk as dsdk

app = dsdk.Discord(APPLICATION_ID, dsdk.CreateFlags.default)

# Don't forget to call run_callbacks
while 1:
    time.sleep(1/10)
    app.run_callbacks()

Get current user

import time

import discordsdk as dsdk

app = dsdk.Discord(APPLICATION_ID, dsdk.CreateFlags.default)

user_manager = app.get_user_manager()


def on_curr_user_update():
    user = user_manager.get_current_user()
    print(f"Current user : {user.username}#{user.discriminator}")


user_manager.on_current_user_update = on_curr_user_update

# Don't forget to call run_callbacks
while 1:
    time.sleep(1/10)
    app.run_callbacks()

Set activity

import time

import discordsdk as dsdk

app = dsdk.Discord(APPLICATION_ID, dsdk.CreateFlags.default)

activity_manager = app.get_activity_manager()

activity = dsdk.Activity()
activity.state = "Testing Game SDK"
activity.party.id = "my_super_party_id"
activity.party.size.current_size = 4
activity.party.size.max_size = 8
activity.secrets.join = "my_super_secret"


def callback(result):
    if result == dsdk.Result.ok:
        print("Successfully set the activity!")
    else:
        raise Exception(result)


activity_manager.update_activity(activity, callback)

# Don't forget to call run_callbacks
while 1:
    time.sleep(1/10)
    app.run_callbacks()

Metadata

Release files for discordsdk 0.2.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for discordsdk 0.2.5
File Size Uploaded
discordsdk-0.2.5.tar.gz 23.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for discordsdk 0.2.5
File Interpreter ABI Platform
discordsdk-0.2.5-py3-none-any.whl Python 3 none any Details

Total release size: 52.5 kB

Release files / discordsdk-0.2.5.tar.gz

Download URL discordsdk-0.2.5.tar.gz
Size 23.1 kB
Tags Source
SHA-256 checksum
How to use checksums
f14f97534bdc2eb9f4d59008e2f741f221437322e9d870b2413c29ac94fbd97c
BLAKE2b-256 checksum
How to use checksums
e934645093f0001e73f6fc11e779fdcae18d7ac558315565826c73c48cdcaae3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

Release files / discordsdk-0.2.5-py3-none-any.whl

Download URL discordsdk-0.2.5-py3-none-any.whl
Size 29.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
558255cc8e973c7dcd5a4d9e8dc077103665d3191869abf73c8006e4576f3476
BLAKE2b-256 checksum
How to use checksums
99137a2a7adacd2f8f1e86ca3b5eb5e3acd0e30f4e49cb5785f1487164c9defa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.2.5 This release

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page