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
Dmitrii Kollerov 784ece36cd initial
2023-07-14 20:19:56 +07:00

74 lines
2.7 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()
{
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();
}
}
}