using Discord; using Discord.WebSocket; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.IO; using System.Threading.Tasks; namespace Discord_Bot { public static class Functions { public static async Task SetBotStatusAsync(DiscordSocketClient client) { JObject config = GetConfig(); string currently = config["currently"]?.Value().ToLower(); string statusText = config["playing_status"]?.Value(); string onlineStatus = config["status"]?.Value().ToLower(); // Set the online status if (!string.IsNullOrEmpty(onlineStatus)) { UserStatus userStatus = onlineStatus switch { "dnd" => UserStatus.DoNotDisturb, "idle" => UserStatus.Idle, "offline" => UserStatus.Invisible, _ => UserStatus.Online }; await client.SetStatusAsync(userStatus); Console.WriteLine($"{DateTime.Now.TimeOfDay:hh\\:mm\\:ss} | Online status set | {userStatus}"); } // Set the playing status if (!string.IsNullOrEmpty(currently) && !string.IsNullOrEmpty(statusText)) { ActivityType activity = currently switch { "listening" => ActivityType.Listening, "watching" => ActivityType.Watching, "streaming" => ActivityType.Streaming, _ => ActivityType.Playing }; await client.SetGameAsync(statusText, type: activity); Console.WriteLine($"{DateTime.Now.TimeOfDay:hh\\:mm\\:ss} | Playing status set | {activity}: {statusText}"); } } public static JObject GetConfig() { using StreamReader configJson = new StreamReader(Directory.GetCurrentDirectory() + @"/Config.json"); return (JObject)JsonConvert.DeserializeObject(configJson.ReadToEnd()); } public static void SaveConfig(JObject config) { using (StreamWriter file = File.CreateText(Directory.GetCurrentDirectory() + @"/Config.json")) using (JsonTextWriter writer = new JsonTextWriter(file)) { config.WriteTo(writer); } } public static string GetAvatarUrl(SocketUser user, ushort size = 1024) { // Get user avatar and resize it. If the user has no avatar, get the default Discord avatar. return user.GetAvatarUrl(size: size) ?? user.GetDefaultAvatarUrl(); } } }