public Channel createDM()
        {
            IRestResponse restResponse = RestApiClient.POST("users/@me/channels", new { recipient_id = $"{author.ID}" });
            Channel       c            = Channel.fromData(JSONDeserializeAndHandleErrors.DeserializeJSON(restResponse));

            reply("" + c.recipients[0]);
            return(c);
        }
        public List <Message> getPins()
        {
            List <Message> pins = new List <Message>();
            dynamic        data = JSONDeserializeAndHandleErrors.DeserializeJSON(RestApiClient.GET($"channels/{ID}/pins"));

            for (int i = 0; i < data.Length; i++)
            {
                pins.Add(Message.fromJSON(data[i]));
            }
            return(pins);
        }
 //[RequireChannelType(ChannelType.GUILD_TEXT)]
 public void sendMessage(string message)
 {
     if (getChannelType() != ChannelType.GUILD_CATEGORY && getChannelType() != ChannelType.GUILD_VOICE)
     {
         JSONDeserializeAndHandleErrors.DeserializeJSON(RestApiClient.POSTDiscordMessage($"channels/{ID}/messages", message));
     }
     else
     {
         throw new InvalidOperationException("Cannot send message to channel of type " + getChannelType());
     }
 }
        public static Channel getChannel(long ID)
        {
            //Console.WriteLine(RestApiClient.GET("channels/" + ID).Content);
            if (Storage.cachedChannels.TryGetValue(ID, out Channel value))
            {
                return(value);
            }
            Channel channel = fromData(JSONDeserializeAndHandleErrors.DeserializeJSON(RestApiClient.GET("channels/" + ID)));

            Storage.cachedChannels.Add(channel.ID, channel);
            return(channel);
        }
        public static Message getMessage(long channel, long ID)
        {
            CarrotcordLogger.log(CarrotcordLogger.LogSource.BOT, $"channels/{channel}/messages/{ID}");
            dynamic data    = JSONDeserializeAndHandleErrors.DeserializeJSON(RestApiClient.GET($"channels/{channel}/messages/{ID}"));
            Message message = new Message();

            message.ID        = data.id;
            message.channelID = data.channel_id;
            message.author    = User.fromData(data.author);
            message.pinned    = data.pinned;
            message.Guild     = Guild.getGuild(message.guildID);
            message.content   = Convert.ToString(data.content);
            return(message);
        }
        public static List <Channel> getDMs()
        {
            dynamic data = JSONDeserializeAndHandleErrors.DeserializeJSON(RestApiClient.GET("users/@me/channels"));

            if (data.Length <= 0)
            {
                return(null);
            }
            List <Channel> channels = new List <Channel>();

            for (int i = 0; i < data.Length; i++)
            {
                channels.Add(Channel.fromData(data[i]));
            }
            return(channels);
        }
 public void edit(string content, DiscordEmbed embed)
 {
     JSONDeserializeAndHandleErrors.DeserializeJSON(RestApiClient.PATCH($"channels/{channelID}/messages/{ID}", new { content = content, embed = embed.toJSON() }));
 }
 public void edit(string _content)
 {
     JSONDeserializeAndHandleErrors.DeserializeJSON(RestApiClient.PATCH($"channels/{channelID}/messages/{ID}", new { content = _content }));
 }