using Discord; using TMPro; using Unity.VisualScripting; using UnityEngine; using UnityEngine.SceneManagement; public class DiscordController : MonoBehaviour { //https://discord.com/developers/applications/ [SerializeField] private long applicationID; [SerializeField] private string largeText; // App Name [SerializeField] private string largeImage; // Name of image [SerializeField] public string details; // Info 1 (top) 3 - 4 word description [SerializeField] public string Location; // Info 2 (bottom) usually link [SerializeField] private TextMeshProUGUI ModTitle; private long time; private static bool instanceExists; public Discord.Discord discord; void Awake() { // Transition the GameObject between scenes, destroy any duplicates if (!instanceExists) { instanceExists = true; DontDestroyOnLoad(gameObject); } else if (FindObjectsOfType(GetType()).Length > 1) { Destroy(gameObject); } } void Start() { discord = new Discord.Discord(applicationID, (ulong)CreateFlags.NoRequireDiscord); time = System.DateTimeOffset.Now.ToUnixTimeMilliseconds(); UpdateStatus(); } void Update() { try { discord.RunCallbacks(); } catch { Debug.LogError("Failed connecting to Discord!"); Destroy(gameObject); } } void LateUpdate() { UpdateStatus(); } public string GetCurrentSceneName() { return SceneManager.GetActiveScene().name; } void UpdateStatus() { string modTitle = Location; if (ModTitle.text != "New Text") { modTitle = "Viewing: "+ModTitle.text; } try { var activityManager = discord.GetActivityManager(); var activity = new Activity { #if UNITY_EDITOR Details = $"Working on {largeText}", #else Details = details, #endif State = modTitle, Assets = { LargeImage = largeImage, LargeText = largeText }, Timestamps ={ Start = time } }; activityManager.UpdateActivity(activity, (res) => { if (res != Result.Ok) Debug.LogError("Failed connecting to Discord!"); }); } catch { Debug.LogError("Failed connecting to Discord!"); } } }