Exemple #1
0
 // void OnDestroy()
 // {
 //     discord.Dispose();
 // }
 void OnApplicationQuit()
 {
     if (platformCompat())
     {
         discord.Dispose();
     }
 }
 void OnDisable()
 {
     if (hasDiscord)
     {
         discord.Dispose();
     }
 }
 public override void Dispose()
 {
     if (Initialized)
     {
         discord.Dispose();
     }
 }
Exemple #4
0
 private static void Shutdown()
 {
     if (_client != null)
     {
         _client.Dispose();
         _client = null;
     }
 }
 public void ShutDown()
 {
     if (IsDiscordAvailable)
     {
         DiscordHook.Dispose();
         Logger.info(1, "Successfully deregistered Discord hooks! Rich presence deactivated");
     }
 }
 /// <summary>
 /// Closes down the bridge and clears the Rich Presence Activity of the player.
 /// </summary>
 private void OnDestroy()
 {
     if (_discord == null)
     {
         return;
     }
     _discord.GetActivityManager().ClearActivity((res) => { });
     _discord.RunCallbacks();
     _discord.Dispose();
 }
        internal static void Unload()
        {
            Log.Info("HSDT DRP Unloading...");

            ClearPresence();
            isDiscordInstanceUp = false;
            discord.Dispose();

            Log.Info("HSDT DRP Successfully Unloaded");
        }
Exemple #8
0
 public override void _Notification(int what)
 {
     if (what == MainLoop.NotificationWmQuitRequest)
     {
         GD.Print("Thank you for playing Wing Commander.");
         discord_instance.Dispose();
         running = false;
         GetTree().Quit();
     }
 }
    private void ClearActivity()
    {
        var activityManager = _discord.GetActivityManager();

        activityManager.ClearActivity(result =>
        {
            Debug.Log("[DISCORD] Cleared activity.");
        });

        _discord.Dispose();
    }
Exemple #10
0
    private void OnDisable()
    {
        SceneManager.sceneLoaded -= OnSceneLoaded;

        if (discord != null)
        {
            Debug.Log("Discord shutting down");
            discord.Dispose();
            discord = null;
        }
    }
Exemple #11
0
 private void OnApplicationQuit()
 {
     ;
     am.ClearActivity(result => {
         if (result == Discord.Result.Ok)
         {
             Debug.Log("Cleared");
         }
         else
         {
             Debug.Log("failed");
         }
     });
     discord.Dispose();
 }
    void Update()
    {
        var activityManager = discord.GetActivityManager();
        var activity        = new Discord.Activity
        {
            State   = "Moving Boxes",
            Details = ""
        };

        activityManager.UpdateActivity(activity, (res) =>
        {
            if (res == Discord.Result.Ok)
            {
                Debug.LogError("Everything is fine!");
            }
        });

        if (Input.GetKey("r"))
        {
            discord.Dispose();
        }
    }
 private void OnApplicationQuit()
 {
     _discord?.Dispose();
 }
 private static void DisposeClient(Discord.Discord client)
 {
     UnlinkActivityEvents(client.GetActivityManager());
     client.Dispose();
 }
Exemple #15
0
    static void Main(string[] args)
    {
        // Use your client ID from Discord's developer site.
        var clientID = Environment.GetEnvironmentVariable("DISCORD_CLIENT_ID");

        if (clientID == null)
        {
            clientID = "418559331265675294";
        }
        var discord = new Discord.Discord(Int64.Parse(clientID), (UInt64)Discord.CreateFlags.Default);

        discord.SetLogHook(Discord.LogLevel.Debug, (level, message) =>
        {
            Console.WriteLine("Log[{0}] {1}", level, message);
        });

        var applicationManager = discord.GetApplicationManager();

        // Get the current locale. This can be used to determine what text or audio the user wants.
        Console.WriteLine("Current Locale: {0}", applicationManager.GetCurrentLocale());
        // Get the current branch. For example alpha or beta.
        Console.WriteLine("Current Branch: {0}", applicationManager.GetCurrentBranch());
        // If you want to verify information from your game's server then you can
        // grab the access token and send it to your server.
        //
        // This automatically looks for an environment variable passed by the Discord client,
        // if it does not exist the Discord client will focus itself for manual authorization.
        //
        // By-default the SDK grants the identify and rpc scopes.
        // Read more at https://discordapp.com/developers/docs/topics/oauth2
        // applicationManager.GetOAuth2Token((Discord.Result result, ref Discord.OAuth2Token oauth2Token) =>
        // {
        //     Console.WriteLine("Access Token {0}", oauth2Token.AccessToken);
        // });

        var activityManager = discord.GetActivityManager();
        var lobbyManager    = discord.GetLobbyManager();

        // Received when someone accepts a request to join or invite.
        // Use secrets to receive back the information needed to add the user to the group/party/match
        activityManager.OnActivityJoin += secret =>
        {
            Console.WriteLine("OnJoin {0}", secret);
            lobbyManager.ConnectLobbyWithActivitySecret(secret, (Discord.Result result, ref Discord.Lobby lobby) =>
            {
                Console.WriteLine("Connected to lobby: {0}", lobby.Id);
                lobbyManager.ConnectNetwork(lobby.Id);
                lobbyManager.OpenNetworkChannel(lobby.Id, 0, true);
                foreach (var user in lobbyManager.GetMemberUsers(lobby.Id))
                {
                    lobbyManager.SendNetworkMessage(lobby.Id, user.Id, 0,
                                                    Encoding.UTF8.GetBytes(String.Format("Hello, {0}!", user.Username)));
                }
                UpdateActivity(discord, lobby);
            });
        };
        // Received when someone accepts a request to spectate
        activityManager.OnActivitySpectate += secret =>
        {
            Console.WriteLine("OnSpectate {0}", secret);
        };
        // A join request has been received. Render the request on the UI.
        activityManager.OnActivityJoinRequest += (ref Discord.User user) =>
        {
            Console.WriteLine("OnJoinRequest {0} {1}", user.Id, user.Username);
        };
        // An invite has been received. Consider rendering the user / activity on the UI.
        activityManager.OnActivityInvite += (Discord.ActivityActionType Type, ref Discord.User user, ref Discord.Activity activity2) =>
        {
            Console.WriteLine("OnInvite {0} {1} {2}", Type, user.Username, activity2.Name);
            // activityManager.AcceptInvite(user.Id, result =>
            // {
            //     Console.WriteLine("AcceptInvite {0}", result);
            // });
        };
        // This is used to register the game in the registry such that Discord can find it.
        // This is only needed by games acquired from other platforms, like Steam.
        // activityManager.RegisterCommand();

        var imageManager = discord.GetImageManager();

        var userManager = discord.GetUserManager();

        // The auth manager fires events as information about the current user changes.
        // This event will fire once on init.
        //
        // GetCurrentUser will error until this fires once.
        userManager.OnCurrentUserUpdate += () =>
        {
            var currentUser = userManager.GetCurrentUser();
            Console.WriteLine(currentUser.Username);
            Console.WriteLine(currentUser.Id);
        };
        // If you store Discord user ids in a central place like a leaderboard and want to render them.
        // The users manager can be used to fetch arbitrary Discord users. This only provides basic
        // information and does not automatically update like relationships.
        userManager.GetUser(450795363658366976, (Discord.Result result, ref Discord.User user) =>
        {
            if (result == Discord.Result.Ok)
            {
                Console.WriteLine("user fetched: {0}", user.Username);

                // Request users's avatar data.
                // This can only be done after a user is successfully fetched.
                FetchAvatar(imageManager, user.Id);
            }
            else
            {
                Console.WriteLine("user fetch error: {0}", result);
            }
        });

        var relationshipManager = discord.GetRelationshipManager();

        // It is important to assign this handle right away to get the initial relationships refresh.
        // This callback will only be fired when the whole list is initially loaded or was reset
        relationshipManager.OnRefresh += () =>
        {
            // Filter a user's relationship list to be just friends
            relationshipManager.Filter((ref Discord.Relationship relationship) => { return(relationship.Type == Discord.RelationshipType.Friend); });
            // Loop over all friends a user has.
            Console.WriteLine("relationships updated: {0}", relationshipManager.Count());
            for (var i = 0; i < Math.Min(relationshipManager.Count(), 10); i++)
            {
                // Get an individual relationship from the list
                var r = relationshipManager.GetAt((uint)i);
                Console.WriteLine("relationships: {0} {1} {2} {3}", r.Type, r.User.Username, r.Presence.Status, r.Presence.Activity.Name);

                // Request relationship's avatar data.
                FetchAvatar(imageManager, r.User.Id);
            }
        };
        // All following relationship updates are delivered individually.
        // These are fired when a user gets a new friend, removes a friend, or a relationship's presence changes.
        relationshipManager.OnRelationshipUpdate += (ref Discord.Relationship r) =>
        {
            Console.WriteLine("relationship updated: {0} {1} {2} {3}", r.Type, r.User.Username, r.Presence.Status, r.Presence.Activity.Name);
        };

        lobbyManager.OnLobbyMessage += (lobbyID, userID, data) =>
        {
            Console.WriteLine("lobby message: {0} {1}", lobbyID, Encoding.UTF8.GetString(data));
        };
        lobbyManager.OnNetworkMessage += (lobbyId, userId, channelId, data) =>
        {
            Console.WriteLine("network message: {0} {1} {2} {3}", lobbyId, userId, channelId, Encoding.UTF8.GetString(data));
        };
        lobbyManager.OnSpeaking += (lobbyID, userID, speaking) =>
        {
            Console.WriteLine("lobby speaking: {0} {1} {2}", lobbyID, userID, speaking);
        };
        // Create a lobby.
        var transaction = lobbyManager.GetLobbyCreateTransaction();

        transaction.SetCapacity(6);
        transaction.SetType(Discord.LobbyType.Public);
        transaction.SetMetadata("a", "123");
        transaction.SetMetadata("a", "456");
        transaction.SetMetadata("b", "111");
        transaction.SetMetadata("c", "222");

        lobbyManager.CreateLobby(transaction, (Discord.Result result, ref Discord.Lobby lobby) =>
        {
            if (result != Discord.Result.Ok)
            {
                return;
            }

            // Check the lobby's configuration.
            Console.WriteLine("lobby {0} with capacity {1} and secret {2}", lobby.Id, lobby.Capacity, lobby.Secret);

            // Check lobby metadata.
            foreach (var key in new string[] { "a", "b", "c" })
            {
                Console.WriteLine("{0} = {1}", key, lobbyManager.GetLobbyMetadataValue(lobby.Id, key));
            }

            // Print all the members of the lobby.
            foreach (var user in lobbyManager.GetMemberUsers(lobby.Id))
            {
                Console.WriteLine("lobby member: {0}", user.Username);
            }

            // Send everyone a message.
            lobbyManager.SendLobbyMessage(lobby.Id, "Hello from C#!", (_) =>
            {
                Console.WriteLine("sent message");
            });

            // Update lobby.
            var lobbyTransaction = lobbyManager.GetLobbyUpdateTransaction(lobby.Id);
            lobbyTransaction.SetMetadata("d", "e");
            lobbyTransaction.SetCapacity(16);
            lobbyManager.UpdateLobby(lobby.Id, lobbyTransaction, (_) =>
            {
                Console.WriteLine("lobby has been updated");
            });

            // Update a member.
            var lobbyID           = lobby.Id;
            var userID            = lobby.OwnerId;
            var memberTransaction = lobbyManager.GetMemberUpdateTransaction(lobbyID, userID);
            memberTransaction.SetMetadata("hello", "there");
            lobbyManager.UpdateMember(lobbyID, userID, memberTransaction, (_) =>
            {
                Console.WriteLine("lobby member has been updated: {0}", lobbyManager.GetMemberMetadataValue(lobbyID, userID, "hello"));
            });

            // Search lobbies.
            var query = lobbyManager.GetSearchQuery();
            // Filter by a metadata value.
            query.Filter("metadata.a", Discord.LobbySearchComparison.GreaterThan, Discord.LobbySearchCast.Number, "455");
            query.Sort("metadata.a", Discord.LobbySearchCast.Number, "0");
            // Only return 1 result max.
            query.Limit(1);
            lobbyManager.Search(query, (_) =>
            {
                Console.WriteLine("search returned {0} lobbies", lobbyManager.LobbyCount());
                if (lobbyManager.LobbyCount() == 1)
                {
                    Console.WriteLine("first lobby secret: {0}", lobbyManager.GetLobby(lobbyManager.GetLobbyId(0)).Secret);
                }
            });

            // Connect to voice chat.
            lobbyManager.ConnectVoice(lobby.Id, (_) =>
            {
                Console.WriteLine("Connected to voice chat!");
            });

            // Setup networking.
            lobbyManager.ConnectNetwork(lobby.Id);
            lobbyManager.OpenNetworkChannel(lobby.Id, 0, true);

            // Update activity.
            UpdateActivity(discord, lobby);
        });

        /*
         * var overlayManager = discord.GetOverlayManager();
         * overlayManager.OnOverlayLocked += locked =>
         * {
         *  Console.WriteLine("Overlay Locked: {0}", locked);
         * };
         * overlayManager.SetLocked(false);
         */

        var storageManager = discord.GetStorageManager();
        var contents       = new byte[20000];
        var random         = new Random();

        random.NextBytes(contents);
        Console.WriteLine("storage path: {0}", storageManager.GetPath());
        storageManager.WriteAsync("foo", contents, res =>
        {
            var files = storageManager.Files();
            foreach (var file in files)
            {
                Console.WriteLine("file: {0} size: {1} last_modified: {2}", file.Filename, file.Size, file.LastModified);
            }
            storageManager.ReadAsyncPartial("foo", 400, 50, (result, data) =>
            {
                Console.WriteLine("partial contents of foo match {0}", Enumerable.SequenceEqual(data, new ArraySegment <byte>(contents, 400, 50)));
            });
            storageManager.ReadAsync("foo", (result, data) =>
            {
                Console.WriteLine("length of contents {0} data {1}", contents.Length, data.Length);
                Console.WriteLine("contents of foo match {0}", Enumerable.SequenceEqual(data, contents));
                Console.WriteLine("foo exists? {0}", storageManager.Exists("foo"));
                storageManager.Delete("foo");
                Console.WriteLine("post-delete foo exists? {0}", storageManager.Exists("foo"));
            });
        });

        var storeManager = discord.GetStoreManager();

        storeManager.OnEntitlementCreate += (ref Discord.Entitlement entitlement) =>
        {
            Console.WriteLine("Entitlement Create1: {0}", entitlement.Id);
        };

        // Start a purchase flow.
        // storeManager.StartPurchase(487507201519255552, result =>
        // {
        //     if (result == Discord.Result.Ok)
        //     {
        //         Console.WriteLine("Purchase Complete");
        //     }
        //     else
        //     {
        //         Console.WriteLine("Purchase Canceled");
        //     }
        // });

        // Get all entitlements.
        storeManager.FetchEntitlements(result =>
        {
            if (result == Discord.Result.Ok)
            {
                foreach (var entitlement in storeManager.GetEntitlements())
                {
                    Console.WriteLine("entitlement: {0} - {1} {2}", entitlement.Id, entitlement.Type, entitlement.SkuId);
                }
            }
        });

        // Get all SKUs.
        storeManager.FetchSkus(result =>
        {
            if (result == Discord.Result.Ok)
            {
                foreach (var sku in storeManager.GetSkus())
                {
                    Console.WriteLine("sku: {0} - {1} {2}", sku.Name, sku.Price.Amount, sku.Price.Currency);
                }
            }
        });

        // Pump the event look to ensure all callbacks continue to get fired.
        try
        {
            while (true)
            {
                discord.RunCallbacks();
                lobbyManager.FlushNetwork();
                Thread.Sleep(1000 / 60);
            }
        }
        finally
        {
            discord.Dispose();
        }
    }
        private void UpdateActivity(int VersionNumber, Microsoft.AspNetCore.Http.IFormCollection collection)
        {
            //var clientID = Environment.GetEnvironmentVariable("DISCORD_CLIENT_ID");
            string clientID = collection["ClientID"].ToString();

            if (clientID == "")
            {
                clientID = "418559331265675294";
                clientID = "636181032353136640";
            }
            var discord         = new Discord.Discord(long.Parse(clientID), (ulong)Discord.CreateFlags.Default);
            var activityManager = discord.GetActivityManager();
            var activity        = new Discord.Activity
            {
                State   = collection["State"],
                Details = collection["Details"],
                Assets  =
                {
                    LargeImage = collection["LargeImage"],
                    LargeText  = collection["LargeText"],
                    SmallImage = collection["SmallImage"],
                    SmallText  = collection["SmallText"],
                },


                Instance = true,
            };

            if (collection["timeStart"] != "")
            {
                activity.Timestamps.Start = long.Parse(collection["timeStart"]);
            }
            if (collection["timeEnd"] != "")
            {
                activity.Timestamps.End = long.Parse(collection["timeEnd"]);
            }
            ;
            if (collection["EnableParty"].ToString() == "on")
            {
                activity.Party.Id   = Guid.NewGuid().ToString();
                activity.Party.Size = new PartySize
                {
                    CurrentSize = collection["CurrentSize"] == "" ? 1 : int.Parse(collection["CurrentSize"]),
                    MaxSize     = collection["MaxSize"] == "" ? 1 : int.Parse(collection["MaxSize"])
                };
                activity.Secrets = new Discord.ActivitySecrets
                {
                    Join     = Guid.NewGuid().ToString(),
                    Match    = Guid.NewGuid().ToString(),
                    Spectate = Guid.NewGuid().ToString(),
                };
            }
            Discord.Result result1 = new Discord.Result();
            activityManager.UpdateActivity(activity, result =>
            {
                Console.WriteLine("Update Activity {0}", result);
                result1 = result;
                // Send an invite to another user for this activity.
                // Receiver should see an invite in their DM.
                // Use a relationship user's ID for this.
                // activityManager
                //   .SendInvite(
                //       364843917537050624,
                //       Discord.ActivityActionType.Join,
                //       "",
                //       inviteResult =>
                //       {
                //           Console.WriteLine("Invite {0}", inviteResult);
                //       }
                //   );
            });
            try
            {
                while (VersionNumber == (int)_cache.Get("DiscordActivityVersion"))
                {
                    discord.RunCallbacks();
                    Thread.Sleep(1000 / 10);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                discord.Dispose();
                _cache.Set("DisposeVersionCode", VersionNumber);
            }
        }
 public void OnDestroy()
 {
     discord.Dispose();
 }
Exemple #18
0
 private void OnDisable()
 {
     discord.Dispose();
 }
Exemple #19
0
 // Called before the game closes
 void OnApplicationQuit()
 {
     ClearActivity();
     discord.Dispose();
     Debug.Log("Game is closing!");
 }
Exemple #20
0
		private void Shutdown()
		{
			if (DiscordInstance == null) return;
			ActivityManager.ClearActivity((result) => { });
			DiscordInstance.Dispose();
		}