protected bool Equals(Attachment other)
 {
     return string.Equals(Title, other.Title) && string.Equals(TitleLink, other.TitleLink) && TitleLinkDownloadable == other.TitleLinkDownloadable
            && string.Equals(Text, other.Text) && string.Equals(ImageUrl, other.ImageUrl) && string.Equals(AuthorName, other.AuthorName)
            && string.Equals(AuthorIcon, other.AuthorIcon) && string.Equals(ThumbUrl, other.ThumbUrl) && string.Equals(Color, other.Color)
            && Timestamp.Equals(other.Timestamp);
 }
        public IEnumerable<IMessageResponse> GetResponse(ResponseContext context, RocketChatBot caller)
        {
            var message = context.Message;

            var search = message.Message.Replace(GiphyCommand, "").Trim();
            var url = GetGiphy(search);
            var attachment = new Attachment
            {
                ImageUrl = url
            };
            yield return message.CreateAttachmentReply(attachment);
        }
 public async Task<MethodResult<RocketMessage>> SendCustomMessageAsync(Attachment attachment, string roomId)
 {
     var request = new
     {
         msg = "",
         rid = roomId,
         bot = IsBot,
         attachments = new[]
         {
             attachment
         }
     };
     var result = await _client.CallAsync("sendMessage", TimeoutToken, request).ConfigureAwait(false);
     return result.ToObject<MethodResult<RocketMessage>>(JsonSerializer);
 }
 public static AttachmentResponse CreateAttachmentReply(this RocketMessage message, Attachment reply)
 {
     return new AttachmentResponse(reply, message.RoomId);
 }
 public AttachmentResponse(Attachment attachment, string roomId)
 {
     Attachment = attachment;
     RoomId = roomId;
 }