using Discord.Rest; using System; using Model = Discord.API.Rpc.Channel; namespace Discord.Rpc { public class RpcChannel : RpcEntity { public string Name { get; private set; } public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id); internal RpcChannel(DiscordRpcClient discord, ulong id) : base(discord, id) { } internal static RpcChannel Create(DiscordRpcClient discord, Model model) { if (model.GuildId.IsSpecified) return RpcGuildChannel.Create(discord, model); else return CreatePrivate(discord, model); } internal static RpcChannel CreatePrivate(DiscordRpcClient discord, Model model) { switch (model.Type) { case ChannelType.DM: return RpcDMChannel.Create(discord, model); case ChannelType.Group: return RpcGroupChannel.Create(discord, model); default: throw new InvalidOperationException($"Unexpected channel type: {model.Type}"); } } internal virtual void Update(Model model) { if (model.Name.IsSpecified) Name = model.Name.Value; } } }