Exemplo n.º 1
0
    private void UpdateActivity()
    {
        var activity = new Discord.Activity();

        activity.State             = "In " + GetSceneName();
        activity.Assets.LargeImage = GetSceneName(true);
        activity.Assets.LargeText  = GetSceneName();

        if (NetworkingManager.Singleton.IsClient)
        {
            activity.Details = string.Format("{0} ({1})", GetSceneName(), Enum.GetName(typeof(Game.Game.GameModes), Game.Game.Instance.Mode));
            activity.State   = "In Match";

            if (Player.Networker.Instance != null)
            {
                Player.Networker a = Player.Networker.Instance;
                activity.Assets.SmallImage = a.nv_Team.Value == 2 ? "beta" : "alpha";
                activity.Assets.SmallText  = a.nv_Team.Value == 2 ? "Team Beta" : "Team Alpha";
            }

            activity.Party.Size.CurrentSize = NetworkingManager.Singleton.ConnectedClientsList.Count;
            activity.Party.Size.MaxSize     = 12;//DB_API.Match.PlayerLimit
        }

        activityManager.UpdateActivity(activity, callback => { Debug.Log("Discord: " + callback); });
    }
Exemplo n.º 2
0
        public static void SetPresence(Discord.Activity activity)
        {
            Initialize();

            if (_Discord == null || !Mod.Properties.UseRichPresence.Value)
            {
                return;
            }

            try
            {
                activity.Assets = new Discord.ActivityAssets
                {
                    LargeImage = "main_icon",
                    LargeText  = "G-Shield by Red"
                };

                activity.Timestamps = new Discord.ActivityTimestamps
                {
                    Start = StartTime
                };

                _Discord.GetActivityManager().UpdateActivity(activity, result => { });
            }
            catch { }
        }
Exemplo n.º 3
0
    private void Start()
    {
        discord = new Discord.Discord(756805917944578112, (UInt64)Discord.CreateFlags.Default);
        var    now               = DateTime.Now.ToLocalTime();
        var    span              = (now - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime());
        var    activityManager   = discord.GetActivityManager();
        string DiscordRichDetail = "waiting";
        var    activity          = new Discord.Activity
        {
            State      = "Into the Deeper world",
            Details    = DiscordRichDetail,
            Timestamps =
            {
                Start = (int)span.TotalSeconds
            },
            Assets =
            {
                LargeImage = "logo",
                LargeText  = null,
                SmallImage = "teamif",
                SmallText  = null,
            },
        };

        activityManager.UpdateActivity(activity, (result) =>
        {
            if (result == Discord.Result.Ok)
            {
                Debug.LogError("Everything is fine!");
            }
        });
    }
Exemplo n.º 4
0
        void UpdateActivity()
        {
            var activityManager = discord.GetActivityManager();
            var lobbyManager    = discord.GetLobbyManager();

            var activity = new Discord.Activity
            {
                Type    = Discord.ActivityType.Playing,
                State   = "Playing",
                Details = activityDetails,

                /*Timestamps =
                 * {
                 * Start = 5,
                 * End = 6,
                 * },*/
                Assets =
                {
                    LargeImage = "gmod_logo",
                    LargeText  = map,
                    SmallImage = "gmod_logo",
                    SmallText  = gamemode.First().ToString().ToUpper() + gamemode.Substring(1),
                },
                Instance = true,
            };

            activityManager.UpdateActivity(activity, result =>
            {
                Console.WriteLine("Update Activity {0}", result);
            });
        }
        private Discord.Activity BuildActivity()
        {
            var activity = new Discord.Activity
            {
                Details = GetGameDetails(), //top
                State   = GetGameState(),   //bottom
                Assets  = new Discord.ActivityAssets
                {
                    LargeImage = GetLargeImage()
                },
                Timestamps = new Discord.ActivityTimestamps
                {
                    Start = startTime
                }
            };

            if (NetWrapper.LocalPlayer.IsInsideADungeon)
            {
                activity.Assets.SmallImage = "main";
                activity.Assets.SmallText  = NetWrapper.LocalPlayer.CurrentDungeon.DungeonName;
            }
            else
            {
                activity.Assets.SmallImage = null;
                activity.Assets.SmallText  = null;
            }

            return(activity);
        }
        public static void Set(AnimeName.Anime anime)
        {
            Init();
            Update();

            string stateString = string.IsNullOrEmpty(anime.episode) ? "" : string.Format("Episode {0} ", anime.episode);

            stateString += string.IsNullOrEmpty(anime.website) ? "" : string.Format("On {0}", anime.website);

            // Hack from string to byte[128] to fix UTF-8 problem
            var activity = new Discord.Activity
            {
                State      = StringToByte(stateString),
                Details    = StringToByte(anime.name),
                Timestamps =
                {
                    Start = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
                },
                Instance = true,
            };

            MainLogic.Log("Try to set discord activity...");
            try
            {
                activityManager.UpdateActivity(activity, StatusCallback);
            }
            catch
            {
                MainLogic.Log("Could not set activity. Discord error. (Maybe try opening discord...)");
            }
        }
Exemplo n.º 7
0
        public static void UpdateActivity(GameType gameToLaunch)
        {
            try
            {
                if (File.Exists(GlobalVars.DiscordDllPath) && Properties.Settings.Default.DiscordIntegration && GlobalVars.discord != null && !GlobalVars.isConsole)
                {
                    var gameClass       = CreateGame(gameToLaunch);
                    var activityManager = GlobalVars.discord.GetActivityManager();

                    string launcherState   = "In Game";
                    string launcherDetails = gameClass.Name;
                    string smallImage      = "launcher_large";
                    string smallText       = launcherState;

                    if (gameClass.Type == GameType.None)
                    {
                        launcherState   = "In Launcher";
                        launcherDetails = "";
                        smallImage      = "";
                        smallText       = "";
                    }

                    var activity = new Discord.Activity
                    {
                        State      = launcherState,
                        Details    = launcherDetails,
                        Timestamps =
                        {
                            Start = UnixTimeNow()
                        },
                        Assets =
                        {
                            LargeImage = gameClass.Image,
                            LargeText  = gameClass.Name,
                            SmallImage = smallImage,
                            SmallText  = smallText
                        },
                        Instance = true
                    };

                    activityManager.UpdateActivity(activity, result =>
                    {
                        Console.WriteLine("DISCORD: Rich Presense for " + gameClass.Name);
                        Console.WriteLine("DISCORD: Update Activity: " + result);
                        if (result == Discord.Result.Ok)
                        {
                            Console.WriteLine("DISCORD: Everything is fine!");
                        }
                        else if (result == Discord.Result.InternalError)
                        {
                            Console.WriteLine("DISCORD: Error when connecting!");
                        }
                    });
                }
            }
            catch (Exception)
            {
            }
        }
Exemplo n.º 8
0
    // Update user's activity for your game.
    // Party and secrets are vital.
    // Read https://discordapp.com/developers/docs/rich-presence/how-to for more details.
    static void UpdateActivity(Discord.Discord discord, Discord.Lobby lobby)
    {
        var activityManager = discord.GetActivityManager();
        var lobbyManager    = discord.GetLobbyManager();

        var activity = new Discord.Activity
        {
            State      = "olleh",
            Details    = "foo details",
            Timestamps =
            {
                Start = 5,
                End   = 6,
            },
            Assets =
            {
                LargeImage = "foo largeImageKey",
                LargeText  = "foo largeImageText",
                SmallImage = "foo smallImageKey",
                SmallText  = "foo smallImageText",
            },
            Party =
            {
                Id   = lobby.Id.ToString(),
                Size =
                {
                    CurrentSize = lobbyManager.MemberCount(lobby.Id),
                    MaxSize     = (int)lobby.Capacity,
                },
            },
            Secrets =
            {
                Join = lobbyManager.GetLobbyActivitySecret(lobby.Id),
            },
            Instance = true,
        };

        activityManager.UpdateActivity(activity, result =>
        {
            Console.WriteLine("Update Activity {0}", 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);
            //       }
            //   );
        });
    }
Exemplo n.º 9
0
        public static void Init()
        {
            discord = new Discord.Discord(625092334283128892, (ulong)Discord.CreateFlags.NoRequireDiscord);
            act     = new Discord.Activity();

            act.Type              = Discord.ActivityType.Playing;
            act.Timestamps.Start  = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
            act.State             = "Loading...";
            act.Assets.LargeImage = "icon";

            discord.GetActivityManager().UpdateActivity(act, OnActivityUpdate);
            discord.RunCallbacks();
        }
Exemplo n.º 10
0
 public static void UpdateActivity(string details)
 {
     Discord.Activity activity = new Discord.Activity
     {
         Details = details,
         Assets  =
         {
             LargeImage = "icon",
             LargeText  = "Mein cooles Logo",
         },
     };
     activityManager.UpdateActivity(activity, (res) => { });
 }
Exemplo n.º 11
0
        /// <summary>
        /// Checks the activity and updates it when needed.
        /// </summary>
        /// <returns>The activity.</returns>
        /// <param name="a">The activity.</param>
        private Discord.Activity CheckActivity(Discord.Activity a)
        {
            if (!Context.IsWorldReady)
            {
                a.Name                   = "DewCord Rich Presence";
                a.State                  = "In a Menu";
                a.Details                = "Living the Valley Life";
                a.Assets.LargeText       = $"Stardew Valley v{Game1.version}";
                a.Assets.LargeImage      = "title_card";
                a.Assets.SmallImage      = "placeholder";
                a.Assets.SmallText       = $"Running {modcount} mods";
                a.Timestamps.Start       = starttime;
                a.Party.Size.CurrentSize = 1;
                a.Party.Size.MaxSize     = 1;
            }
            else
            {
                if (Context.IsMultiplayer)
                {
                    a.Party.Id           = Game1.MasterPlayer.UniqueMultiplayerID.ToString();
                    a.Secrets.Join       = Game1.server.getInviteCode();
                    a.Party.Size.MaxSize = Game1.getFarm().getNumberBuildingsConstructed("Cabin") + 1;
                    string deets;
                    if (Context.IsMainPlayer)
                    {
                        deets = "Hosting Co-op";
                    }
                    else
                    {
                        deets = "Playing Co-op";
                    }
                    a.Details = $"{PlayerRank()} - {deets} ({Game1.numberOfPlayers()} of {a.Party.Size.MaxSize})";
                }
                else
                {
                    a.Details = $"Playing solo";
                }
                a.State             = $"{Game1.player.farmName} farm ({Game1.player.Money}G) {(Game1.player.hasPet() ? " with " + Game1.player.getPetDisplayName() : ".")}";
                a.Assets.LargeImage = $"{Game1.currentSeason}_{Farmlayout_type()}";
                a.Assets.LargeText  = $"At {SplitName(Game1.currentLocation.Name)}";
                a.Assets.SmallImage = $"weather_{Weather_type()}";
                a.Assets.SmallText  = $"{getTimeFormatted()} - Day {Game1.dayOfMonth} of {Season()}, Year {Game1.year}";
                a.Timestamps.Start  = starttime;
                //a.Timestamps.End = InGameTime();
#if DEBUG
                this.Monitor.Log($"farm icon {Game1.currentSeason}_{Farmlayout_type()}", LogLevel.Debug);
                this.Monitor.Log($"Ingame Time UTC: {InGameTime()} vs. {Game1.timeOfDay}", LogLevel.Debug);
#endif
            }
            return(a);
        }
Exemplo n.º 12
0
    void Start()
    {
        DiscordGenerators uiids = new DiscordGenerators();
        UIID partySecret        = uiids.getPartySecret();
        UIID matchSecret        = uiids.getMatchSecret();
        UIID spectateSecret     = uiids.getSpectateSecret();

        discord = new Discord.Discord(756885699059253378, (UInt64)Discord.CreateFlags.Default);
        var activityManager = discord.GetActivityManager();
        var activity        = new Discord.Activity
        {
            State      = "Playing Dreeming",
            Details    = "Making their Dreem",
            Timestamps =
            {
                Start = Convert.ToInt64(Constants.startEpocDate),
            },
            Assets =
            {
                LargeImage = "dreembig",
                LargeText  = "Dreem Logo",
                SmallImage = "dreemsmall",
                SmallText  = "Making their Dreem",
            },
            Party =
            {
                Id   = new UIID().ToString(),
                Size =
                {
                    CurrentSize =                     1,
                    MaxSize     =                     4,
                },
            },
            Secrets =
            {
                Match    = matchSecret.getVal(),
                Join     = partySecret.getVal(),
                Spectate = spectateSecret.getVal()
            },
            Instance = true,
        };

        activityManager.UpdateActivity(activity, (res) =>
        {
            if (res == Discord.Result.Ok)
            {
                Debug.Log("Discord RPC running perfectly.");
            }
        });
    }
Exemplo n.º 13
0
        private static void UpdateActivity()
        {
            var activityManager = discord.GetActivityManager();

            string scene = "No Scene";

            if (Selection.gameObjects.Length > 0 && Selection.gameObjects[0].scene.IsValid())
            {
                scene = "Scene: " + Selection.gameObjects[0].scene.name;
            }
            else if (SceneManager.GetActiveScene().IsValid() && SceneManager.GetActiveScene().path != "")
            {
                scene = "Scene: " + SceneManager.GetActiveScene().name;
            }
            string file = "";

            if (last_updated_file_name.Length > 0)
            {
                file = "Last Edited: " + last_updated_file_name;
            }

            var activity = new Discord.Activity
            {
                State      = file,
                Details    = scene,
                Timestamps =
                {
                    Start = Helper.GetUnityStartUpTimeStamp(),
                },
                Assets =
                {
                    LargeImage = "unity",
                    LargeText  = Application.productName,
                    SmallImage = "foo smallImageKey",
                    SmallText  = "foo smallImageText",
                },
                Party =
                {
                },
                Secrets =
                {
                },
                Instance = true,
            };

            activityManager.UpdateActivity(activity, result =>
            {
            });
        }
Exemplo n.º 14
0
        public static void SetPresence(Discord.Activity activity)
        {
            Initialize();

            if (DiscordInstance != null)
            {
                activity.Assets = new Discord.ActivityAssets
                {
                    LargeImage = "main_icon"
                };

                activity.Timestamps = new Discord.ActivityTimestamps
                {
                    Start = StartTime
                };

                DiscordInstance.GetActivityManager().UpdateActivity(activity, result => { });
            }
        }
Exemplo n.º 15
0
    void Inicialize()
    {
        //Debug.Log("Discord Status Started ");
        discord = new Discord.Discord(816815784432107540, (UInt64)Discord.CreateFlags.Default);
        var activityManager = discord.GetActivityManager();
        var activity        = new Discord.Activity
        {
            State = "Running Infinite",
        };

        activityManager.UpdateActivity(activity, (res) => {
            if (res == Discord.Result.Ok)
            {
                Debug.Log("Discord Status set");
            }
            else
            {
                Debug.LogError("Discord Status Failed");
            }
        });
    }
        private void UpdateAll()
        {
            var activityManager = Main.discord.GetActivityManager();
            var main            = new Discord.Activity
            {
                Details = pDetails,
                State   = pState,
                Assets  =
                {
                    LargeImage = lImage,
                    SmallImage = sImage
                },
            };

            activityManager.UpdateActivity(main, (res) =>
            {
                if (res == Discord.Result.Ok)
                {
                    All();
                }
            });
        }
Exemplo n.º 17
0
        public void SetActivity(DisplayItem displayItem, bool withStartTime = false)
        {
            var activity = new Discord.Activity
            {
                State   = displayItem.State,
                Details = displayItem.Details,
                Assets  =
                {
                    LargeImage = displayItem.ImageKey,
                    LargeText  = displayItem.Details,
                },
                Instance = true,
            };

            if (withStartTime)
            {
                activity.Timestamps = new Discord.ActivityTimestamps {
                    Start = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
                };
            }

            discord.GetActivityManager().UpdateActivity(activity, (result) => Console.WriteLine(result));
        }
Exemplo n.º 18
0
    public void RefeshActivity()
    {
        var activity = new Discord.Activity
        {
            State      = state,
            Details    = details,
            Timestamps =
            {
                Start = timestampStart,
                End   = timestampEnd
            },
            Assets =
            {
                LargeImage = assetLargeImage,
                LargeText  = assetLargeText,
                SmallImage = assetSmallImage,
                SmallText  = assetSmallText
            },
            Party =
            {
                Id   = partyId,
                Size =
                {
                    CurrentSize = partySizeCurrentSize,
                    MaxSize     = partySizeMaxSize
                }
            },
            Secrets =
            {
                Match    = secretMatch,
                Join     = secretJoin,
                Spectate = secretSpectate
            }
        };

        GameObject.Find("GameManager").GetComponent <DiscordController>().UpdateActivity(activity);
    }
Exemplo n.º 19
0
    void Awake()
    {
        if (alreadyRunning)
        {
            Destroy(this);
            return;
        }
        alreadyRunning = true;

        discord         = new Discord.Discord(600379630427570226, (System.UInt64)Discord.CreateFlags.Default);
        activityManager = discord.GetActivityManager();
        Discord.Activity activity = new Discord.Activity
        {
            Details = "Main Menu",
            Assets  =
            {
                LargeImage = "icon",
                LargeText  = "Mein cooles Logo",
            },
        };
        activityManager.UpdateActivity(activity, (res) => { });

        DontDestroyOnLoad(this);
    }
Exemplo n.º 20
0
        static void Main(string[] args)
        {
            // Get Discord client ID from app config file
            long client_id = Convert.ToInt64(ConfigurationManager.AppSettings["client_id"]);

            Console.WriteLine("Client ID: {0}", client_id);

            // Create new Discord GameSDK instance
            var discord = new Discord.Discord(client_id, (ulong)Discord.CreateFlags.Default);

            // Create new Discord Rich Presence activity
            var activity = new Discord.Activity
            {
                ApplicationId = client_id,
                State         = "",
                Details       = "Not playing anything",
                Timestamps    =
                {
                    Start = 0,
                    End   = 0
                },
                Assets =
                {
                    LargeImage = "mpc_hc_icon_classic",
                },
            };

            // Set up Discord GameSDK debug logging
            discord.SetLogHook(Discord.LogLevel.Debug, (level, message) =>
            {
                Console.WriteLine("Discord:{0} - {1}", level, message);
            });

            // Get current activity manager from Discord
            var activityManager = discord.GetActivityManager();


            // Main loop: Detect last active MPC-HC window, update presence and run Discord callbacks
            Process activeMPCHCProcess = null;

            while (true)
            {
                bool activityChanged = false;

                if (activeMPCHCProcess != null && activeMPCHCProcess.HasExited)
                {
                    activeMPCHCProcess = null;
                }

                var activeWindowHandle = GetForegroundWindow();

                var processes = Process.GetProcessesByName("mpc-hc64");
                foreach (var process in processes)
                {
                    if (!string.IsNullOrEmpty(process.MainWindowTitle) && process.MainWindowTitle != "Media Player Classic Home Cinema" && process.MainWindowHandle == activeWindowHandle)
                    {
                        activeMPCHCProcess = process;
                        break;
                    }
                }

                if (activeMPCHCProcess != null)
                {
                    if (activity.State != activeMPCHCProcess.MainWindowTitle)
                    {
                        activity.State  = activeMPCHCProcess.MainWindowTitle;
                        activityChanged = true;
                    }

                    int i = 0;
                    EnumChildWindows(activeMPCHCProcess.MainWindowHandle, (hwnd, param) =>
                    {
                        string text = "";
                        if (i == 4 || i == 5)
                        {
                            var bld = new StringBuilder(32);
                            GetWindowText(hwnd, bld, 32);
                            text = bld.ToString();
                        }

                        if (i == 4)
                        {
                            var parts = text.Split(new string[] { " / " }, StringSplitOptions.None);
                            if (parts.Length == 2)
                            {
                                TimeSpan startOffset = TimeSpan.Zero, endOffset = TimeSpan.Zero;
                                try
                                {
                                    startOffset = TimeSpan.ParseExact(parts[0], "g", CultureInfo.CurrentCulture);
                                    endOffset   = TimeSpan.ParseExact(parts[1], "g", CultureInfo.CurrentCulture);
                                }
                                catch (OverflowException)
                                {
                                    startOffset = TimeSpan.ParseExact(parts[0], "mm\\:ss", CultureInfo.CurrentCulture);
                                    endOffset   = TimeSpan.ParseExact(parts[1], "mm\\:ss", CultureInfo.CurrentCulture);
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(ex);
                                }
                                finally
                                {
                                    var now     = new DateTimeOffset(DateTime.Now);
                                    var start   = now.Subtract(startOffset);
                                    var end     = start.Add(endOffset);
                                    var tsStart = start.ToUnixTimeSeconds();
                                    var tsEnd   = end.ToUnixTimeSeconds();

                                    if (activity.Timestamps.Start != tsStart)
                                    {
                                        activity.Timestamps.Start = tsStart;
                                        activityChanged           = true;
                                    }
                                    if (activity.Timestamps.End != tsEnd)
                                    {
                                        activity.Timestamps.End = tsEnd;
                                        activityChanged         = true;
                                    }
                                }
                            }
                        }
                        else if (i == 5)
                        {
                            if (activity.Details != text)
                            {
                                activity.Details = text;
                                activityChanged  = true;
                            }
                        }

                        i++;
                        return(i <= 5);
                    }, 0);
                }
                else
                {
                    if (activity.State != "")
                    {
                        activity.State  = "";
                        activityChanged = true;
                    }
                    if (activity.Details != "Not playing anything")
                    {
                        activity.Details = "Not playing anything";
                        activityChanged  = true;
                    }
                    if (activity.Timestamps.Start != 0)
                    {
                        activity.Timestamps.Start = 0;
                        activityChanged           = true;
                    }
                    if (activity.Timestamps.End != 0)
                    {
                        activity.Timestamps.End = 0;
                        activityChanged         = true;
                    }
                }

                // Update presence if changed
                if (activityChanged)
                {
                    activityManager.UpdateActivity(activity, (result) => {});
                }

                // Run Discord callbacks
                discord.RunCallbacks();

                Thread.Sleep(1000);
            }
        }
Exemplo n.º 21
0
 private void TimesUp(object sender, ReturnedToTitleEventArgs e, Discord.Discord discord, Discord.Activity acc)
 {
     Update(null, null, discord, acc);
 }
Exemplo n.º 22
0
        public override void Entry(IModHelper helper)
        {
#if DEBUG
            this.Monitor.Log($"HEY!!! You shouldn't be seeing this!", LogLevel.Alert);
            this.Monitor.Log($"Unless you're Tortellini... then maybe this should be here", LogLevel.Alert);
            this.Monitor.Log($"IF YOURE NOT TORTELLINI THEN YELL AT HIM TO BUILD IN RELEASE MODE", LogLevel.Alert);
#endif
            starttime = CurrentTime();
            var discord = new Discord.Discord(824160913908039729, (UInt64)Discord.CreateFlags.NoRequireDiscord);
            modcount = helper.ModRegistry.GetAll().Count();
            var Activity = new Discord.Activity
            {
                ApplicationId = 824160913908039729,
                Name          = "DewCord Rich Presence",
                State         = $"In a Menu",
                Details       = $"Living the Valley Life",
                Timestamps    =
                {
                    Start = starttime,
                },
                Assets =
                {
                    LargeImage = "title_card",
                    LargeText  = $"Stardew Valley v{Game1.version}",
                    SmallImage = "placeholder",
                    SmallText  = $"Running {modcount} mods",
                },
                Party =
                {
                    Id   = "foo",
                    Size =
                    {
                        CurrentSize =     1,
                        MaxSize     =     1,
                    }
                },

                Secrets =
                {
                    Match    = "bar",
                    Join     = "baz",
                    Spectate = "foobar",
                },
                Instance = true,
            };
            acc = Activity;
            var userManager        = discord.GetUserManager();
            var imageManager       = discord.GetImageManager();
            var lobbyManager       = discord.GetLobbyManager();
            var applicationManager = discord.GetApplicationManager();
            userManager.OnCurrentUserUpdate += () =>
            {
                var currentUser = userManager.GetCurrentUser();
                this.Monitor.Log($"Discord User: {currentUser.Username}#{currentUser.Discriminator}", LogLevel.Debug);
                Update(null, null, discord, Activity);
                //this.Monitor.Log($"Discriminator: {currentUser.Discriminator}", LogLevel.Debug);
                //this.Monitor.Log($"ID: {currentUser.Id}", LogLevel.Debug);
            };

            helper.Events.GameLoop.DayStarted      += this.NewDay;
            helper.Events.GameLoop.UpdateTicked    += (sender, e) => this.Update(sender, e, discord, Activity);
            helper.Events.GameLoop.ReturnedToTitle += (sender, e) => this.TimesUp(sender, e, discord, Activity);
        }
Exemplo n.º 23
0
        private void Update(object sender, UpdateTickedEventArgs e, Discord.Discord discord, Discord.Activity activity)
        {
#if MULTI_WAIT
            if (!Context.IsWorldReady)
            {
                return;
            }
#endif
#if USEACC
            var activityManager = discord.GetActivityManager();
            activityManager.RegisterSteam(413150);
            //activityManager.RegisterCommand("steam://run-game-id/413150");
            try
            {
                if (e == null) // should only happen once, for loading screen displayability
                {
                    this.Monitor.Log($"Init Discord setup", LogLevel.Info);
                    activityManager.UpdateActivity(CheckActivity(acc), (result) =>
                    {
                        if (result != Discord.Result.Ok)
                        {
                            this.Monitor.Log($"Update Activity: {result}", LogLevel.Warn);
                        }
                    });

                    discord.RunCallbacks();
                }
                else if (e.IsMultipleOf(30))
                {
                    activityManager.UpdateActivity(CheckActivity(acc), (result) =>
                    {
                        if (result != Discord.Result.Ok)
                        {
                            this.Monitor.Log($"Update Activity: {result}", LogLevel.Warn);
                        }
                    });
                    ///TODO: The `runncallbacks()` function still technically throws an error but it recovers most of the time??? I Think????
                    try
                    {
                        discord.RunCallbacks();
                    }
                    catch (Discord.ResultException exc)
                    {
                        this.Monitor.Log($"Result Exception: {exc}", LogLevel.Warn);
                    }
                }
            }
            catch { }
#else // not sure why the below breaks things - something to do with the lifetime of the Activity?
            var activityManager = discord.GetActivityManager();
            activityManager.RegisterSteam(413150);
            //activityManager.RegisterCommand("steam://run-game-id/413150");
            try
            {
                if (e == null) // should only happen once, for loading screen displayability
                {
                    this.Monitor.Log($"Init Discord setup", LogLevel.Info);
                    activityManager.UpdateActivity(CheckActivity(activity), (result) =>
                    {
                        if (result != Discord.Result.Ok)
                        {
                            this.Monitor.Log($"Update Activity: {result}", LogLevel.Warn);
                        }
                    });

                    discord.RunCallbacks();
                }
                else if (e.IsMultipleOf(20))
                {
                    activityManager.UpdateActivity(CheckActivity(activity), (result) =>
                    {
                        if (result != Discord.Result.Ok)
                        {
                            this.Monitor.Log($"Update Activity: {result}", LogLevel.Warn);
                        }
                    });

                    discord.RunCallbacks();
                }
            }
            catch { }
#endif
        }
Exemplo n.º 24
0
        static void SetPresence(string raw)
        {
            Dictionary <string, string> message = Parsing.ParseUdpMessage(raw);

            if (!Parsing.ValidateActivityDict(message))
            {
                return;
            }

            Discord.Activity activity = new Discord.Activity {
                Instance = true
            };

            string mode       = message["gamemode"];
            string location   = message["location"];
            string regionCode = message["regioncode"];

            if (lastLocation == location && mode == lastGameMode)
            {
                return;
            }
            else
            {
                lastLocation = location;
            }

            // if gamemode has changed (and neither before nor after is "Dead"), reset the start timestamp
            if (lastGameMode != mode && lastGameMode != "Dead" && mode != "Dead")
            {
                startTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
                lastGameMode   = mode;
            }
            activity.State      = mode;
            activity.Timestamps = new Discord.ActivityTimestamps {
                Start = startTimestamp
            };

            // set location
            location         = Parsing.ParseRegionName(message["regioncode"], location);
            activity.Details = location;

            // set thumbnail
            string largeImage;

            if (Parsing.ValidRegion(regionCode))
            {
                largeImage = regionCode.ToLower();
            }
            else
            {
                Dictionary <string, string> imageKeys = new Dictionary <string, string>
                {
                    { "Dreaming", "dreaming" },
                    { "Sleeping", "dreaming" },
                    { "Dead", "death" }
                };

                if (imageKeys.ContainsKey(mode))
                {
                    largeImage = imageKeys[mode];
                }
                else
                {
                    largeImage = "slugcat";
                }
            }
            activity.Assets = new Discord.ActivityAssets {
                LargeImage = largeImage
            };

            Console.WriteLine($"DiscordRelay.SetPresence : about to update activity : {activity.Details}");
            lock (discordLock)
            {
                discord.GetActivityManager().UpdateActivity(activity, updateHandler);
            }
        }
Exemplo n.º 25
0
        public async Task <object> Invoke(object _)
        {
            try
            {
                startDiscord();
                isDiscordConnected = true;
            }
            catch
            {
                isDiscordConnected = false;
            }
            return((Func <object, Task <object> >)(async(dynamic input) =>
            {
                if (!isDiscordConnected)
                {
                    try
                    {
                        startDiscord();
                        isDiscordConnected = true;
                    }
                    catch
                    {
                        isDiscordConnected = false;
                    }
                    return returnHelper();
                }

                Discord.Activity activity;
                lastInput = input;
                currentView = input.currentView;
                if (currentView == null)
                {
                    activity = new Discord.Activity
                    {
                        Details = "Not logged in",
                        Assets =
                        {
                            LargeImage = "logo"
                        }
                    };
                }
                else
                {
                    string largeKeyValue;
                    string largeTextValue;
                    if (input.avatar != null)
                    {
                        largeKeyValue = $"{input.avatar.avatar}_{input.avatar.outfit}_{input.avatar.option}".Replace(" ", "_").ToLower();
                        largeTextValue = input.avatar.avatar;
                    }
                    else
                    {
                        largeKeyValue = "logo";
                        largeTextValue = null;
                    }

                    if (currentView == "Lobby")
                    {
                        activity = new Discord.Activity
                        {
                            Details = $"Waiting",
                            State = (input.gameMode == "Ranked") ? "Ranked Lobby" : ((input.lobbyIsPrivate) ? "Private Lobby" : "Public Lobby"),
                            Assets =
                            {
                                LargeImage = largeKeyValue,
                                LargeText  = largeTextValue,
                                SmallImage = getGameModeKey(input.gameMode),
                                SmallText  = input.gameMode
                            },
                            Party =
                            {
                                Id              = $"lobby id={input.lobbyId}",
                                Size            =
                                {
                                    CurrentSize = input.currentPlayers,
                                    MaxSize     = input.totalPlayers,
                                },
                            },
                            Secrets =
                            {
                                Join = encodeSecret()
                            },
                            Instance = true
                        };
                    }
                    else if (currentView == "Quiz")
                    {
                        activity = new Discord.Activity
                        {
                            Details = ((input.isSpectator) ? "Spectating" : "Playing") + ((input.gameMode == "Ranked") ? " Ranked" : ""),
                            State = $"{input.currentSongs}/{input.totalSongs} Songs",
                            Assets =
                            {
                                LargeImage = largeKeyValue,
                                LargeText  = largeTextValue,
                                SmallImage = getGameModeKey(input.gameMode),
                                SmallText  = input.gameMode
                            },
                            Party =
                            {
                                Id              = $"lobby id={input.lobbyId}",
                                Size            =
                                {
                                    CurrentSize = input.currentPlayers,
                                    MaxSize     = input.totalPlayers,
                                },
                            }
                        };
                    }
                    else if (currentView == "Expand Library" && input.songName != null)
                    {
                        activity = new Discord.Activity
                        {
                            Details = $"Currently in Expand Library",
                            State = $"Checking out '{input.songName}' by '{input.artistName}' from '{input.animeName}' [{input.typeName}]",
                            Assets =
                            {
                                LargeImage = largeKeyValue,
                                LargeText  = largeTextValue
                            }
                        };
                    }
                    else
                    {
                        activity = new Discord.Activity
                        {
                            Details = $"Currently in {currentView}",
                            Assets =
                            {
                                LargeImage = largeKeyValue,
                                LargeText  = largeTextValue
                            }
                        };
                    }
                }

                activityManager.UpdateActivity(activity, result => { });
                try
                {
                    discord.RunCallbacks();
                }
                catch
                {
                    isDiscordConnected = false;
                }

                return returnHelper();
            }));
        }
Exemplo n.º 26
0
        private void _BackgroundLoop()
        {
            App.Logger.Info(nameof(DiscordManager), "Background loop started");
            try
            {
                while (true)
                {
                    _DisposedTokenSource.Token.ThrowIfCancellationRequested();

                    var workingVisible = StatusVisible;
                    if (workingVisible != LastStatusVisible)
                    {
                        if (workingVisible)
                        {
                            _Discord?.Dispose();
                            _Discord = _CreateDiscordClient();

                            var activity = new Discord.Activity
                            {
                                State   = "Optimised PSO2 Patcher",
                                Details = "https://astra.yen.gg",
                                Assets  = new Discord.ActivityAssets
                                {
                                    LargeImage = "icon-borderless",
                                    LargeText  = "PSRT Astra"
                                }
                            };

                            Discord.Result?result = null;
                            _Discord.GetActivityManager().UpdateActivity(activity, res => result = res);
                            while (result == null)
                            {
                                _PollDiscord(_Discord);
                            }

                            if (result == Discord.Result.Ok)
                            {
                                App.Logger.Info(nameof(DiscordManager), "Activity updated");
                            }
                            else
                            {
                                App.Logger.Info(nameof(DiscordManager), $"Activity update failed: {result}");
                            }
                        }
                        else if (_Discord != null)
                        {
                            Discord.Result?result = null;
                            _Discord.GetActivityManager().ClearActivity(res => result = res);
                            while (result == null)
                            {
                                _PollDiscord(_Discord);
                            }

                            _Discord.Dispose();
                            _Discord = null;

                            if (result == Discord.Result.Ok)
                            {
                                App.Logger.Info(nameof(DiscordManager), "Activity cleared");
                            }
                            else
                            {
                                App.Logger.Info(nameof(DiscordManager), $"Activity clearing failed: {result}");
                            }
                        }
                        LastStatusVisible = workingVisible;
                    }

                    Thread.Sleep(250);
                }
            }
            catch (OperationCanceledException)
            {
                App.Logger.Info(nameof(DiscordManager), "Background loop canceled");
            }
            catch (Exception ex)
            {
                App.Logger.Error(nameof(DiscordManager), "Fatal error in background loop", ex);
            }
            finally
            {
                _Discord?.Dispose();
            }
        }