using System.Globalization; using Remora.Rest.Core; namespace Boyfriend.Data; /// <summary> /// Stores information about a guild. This information is not accessible via the Discord API. /// </summary> /// <remarks>This information is stored on disk as a JSON file.</remarks> public class GuildData { public readonly GuildConfiguration Configuration; public readonly string ConfigurationPath; public readonly Dictionary<ulong, MemberData> MemberData; public readonly string MemberDataPath; public readonly Dictionary<ulong, ScheduledEventData> ScheduledEvents; public readonly string ScheduledEventsPath; public GuildData( GuildConfiguration configuration, string configurationPath, Dictionary<ulong, ScheduledEventData> scheduledEvents, string scheduledEventsPath, Dictionary<ulong, MemberData> memberData, string memberDataPath) { Configuration = configuration; ConfigurationPath = configurationPath; ScheduledEvents = scheduledEvents; ScheduledEventsPath = scheduledEventsPath; MemberData = memberData; MemberDataPath = memberDataPath; } public CultureInfo Culture => Configuration.GetCulture(); public MemberData GetMemberData(Snowflake userId) { if (MemberData.TryGetValue(userId.Value, out var existing)) return existing; var newData = new MemberData(userId.Value, null); MemberData.Add(userId.Value, newData); return newData; } }