Skip to main content

Python wrapper around Discord's Game SDK library.

Project description

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()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

discordsdk-0.2.5.tar.gz (23.1 kB view hashes)

Uploaded Source

Built Distribution

discordsdk-0.2.5-py3-none-any.whl (29.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page