43 lines
1.3 KiB
C#
43 lines
1.3 KiB
C#
using Discord.Rest;
|
|
using System;
|
|
|
|
using Model = Discord.API.Rpc.Channel;
|
|
|
|
namespace Discord.Rpc
|
|
{
|
|
public class RpcChannel : RpcEntity<ulong>
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
}
|