1
0
This repository has been archived on 2023-08-03. You can view files and clone it, but cannot push or open issues or pull requests.
budet-cho-bot/Budet-cho-bot/Functions/Functions.cs
2023-07-25 19:06:46 +08:00

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();
}
}
}