LennyPhoenix / py-discord-sdk

Discord Game SDK for Python
MIT License
26 stars 7 forks source link
discord discordgamesdk hacktoberfest python

Discord Game SDK for Python

Notice 2024/05/31 Discord's Game SDK has been largely deprecated, and I don't have the bandwidth to maintain the project so I am choosing to archive it. Feel free to fork or email me if you'd like to maintain the project.

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

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

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

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