92 lines
3.2 KiB
C#
92 lines
3.2 KiB
C#
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<string>().ToLower();
|
|
string statusText = config["playing_status"]?.Value<string>();
|
|
string onlineStatus = config["status"]?.Value<string>().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()
|
|
{
|
|
string path = Directory.GetCurrentDirectory() + @"/Config.json";
|
|
if (!File.Exists(path))
|
|
{
|
|
throw new FileNotFoundException("gde config?");
|
|
}
|
|
|
|
using StreamReader configJson = new StreamReader(path);
|
|
return (JObject)JsonConvert.DeserializeObject(configJson.ReadToEnd());
|
|
}
|
|
|
|
public static JToken GetConfigItem(string item)
|
|
{
|
|
var config = Functions.GetConfig();
|
|
if (config.TryGetValue(item, out var result))
|
|
{
|
|
return result;
|
|
}
|
|
|
|
var res = new JValue(0);
|
|
return res.Type == JTokenType.Null;
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
}
|